何もかもが初心者ですが

プログラミングもアウトプットもブログも初心者ですが、初心者なりに成長するためにブログを書こうと思います

Cherry本勉強中 9月1日

メソッド 定義

デフォルト値付き引数

メソッドを呼び出す際、引数の数は基本同じでないとエラーになる
<例>

def fruit_cake(fruit)
  if fruit == "いちご"
    "#{fruit}パフェ"
  else
    "チョコパフェ"
  end
end

puts fruit_cake #=>`fruit_cake': wrong number of arguments (given 0, expected 1) (ArgumentError)(引数少ない)
puts fruit_cake("みかん") #=>チョコパフェ(引数一緒)
puts fruit_cake("いちご") #=>いちごパフェ(引数一緒)
puts fruit_cake("みかん","いちご") #=>`fruit_cake': wrong number of arguments (given 2, expected 1) (ArgumentError)(引数多い)

引数少ない場合のエラー解消方法の一つ => デフォルト値付き引数

def メソッド(引数1= デフォルト値1,引数2=デフォルト値2)
  必要な処理
end

引数にデフォルト値を付けると、引数の数が少なくても、デフォルト値がそこを補填してくれる

def fruit_cake(fruit = "いちご")
  if fruit == "いちご"
    "#{fruit}パフェ"
  else
    "チョコパフェ"
  end
end

puts fruit_cake  #=>いちごパフェ(引数がなかったからデフォルト値で補填されている)
puts fruit_cake("みかん") #=>チョコパフェ
puts fruit_cake("いちご") #=>いちごパフェ
  • 引数のデフォルト値は使うとなったときに、必ず全ての引数に付ける必要はない
def number(a,b,c = 0,d = 0)
  "one=#{a},second=#{b},third=#{c},fourth=#{d}"
end

puts number(1,2) #=> one=1,second=2,third=0,fourth=0
puts number(1,2,3) #=> one=1,second=2,third=3,fourth=0
puts number(1,2,3,4) #=> one=1,second=2,third=3,fourth=4
  • 引数はメソッドの戻り値にすることも可能
require "date"

def argument(day=Date.today,day_message = message)
  "本日は#{day}。今日一日メッセージは#{day_message}"
end

def message
  "洗濯日和"
end

puts argument

Date.todayはrequire "date"をした状態でないとエラーが出るので注意

末尾が「?」のメソッド

例えば

valid? #=>バリデーションを通りますか?(通る=>true/通らない=>false)
include? ("abc")#=>引数の文字を含んでいますか?(含んでいる=>true/含んでない=>false)
nil? #=>nilですか?(nil =>true/nilじゃない=>false)

「?」で終わるメソッドは「〜〜ですか?」の質問メソッドで、その通りであるならtrue/その通りでないならfalseを返す

末尾が「!」のメソッド(注意が必要なメソッド)

使用する時は注意が必要なメソッド
例えば

a = "abc"

puts a.upcase #=> ABC
puts a #=>abc(ここに注目!)

puts a.upcase! #=> ABC
puts a #=> ABC(ここに注目!)

upcase!の場合はupcaseとは違い、元のデータまで大文字にしてしまった(こういう元のデータまで変えてしまうメソッドを破壊的メソッドという
「!」の場合、破壊的メソッドだから「!」が付くわけではない。
あくまで末尾「!」メソッドは使用する時は注意が必要なメソッドなだけであり、使用する際は注意しよう。

参考 「プロを目指す人のためのRuby入門」