Ruby on Rails メソッドのデフォルト引数(kinds = @name)
class Food
def initialize
@name = 'りんご'
end
def fruit(kinds= @name)
puts "#{kinds}を注文しました"
end
end
food = Food.new
food.fruit('みかん')
food.fruit
Ruby on Railsを勉強していて、これなんだっけとなったものをメモしておきます。
上記のコードで説明すると、
def fruit(kinds= @name)
fruitメソッドに引数が渡されていればその引数の値にする。
引数がなければデフォルトの値を入れておく。
ちなみにinitializeメソッドをクラス内に記述した場合は、オブジェクトが作成される時に自動的に呼び出されます。つまり@nameにりんごを入れておくことでデフォルトはりんごになる。
food = Food.new
オブジェクトが作成して、現在のデフォルト値はりんごになっている。
food.fruit(‘みかん’)
fruitメソッドにみかんという引数が渡されているので、りんごからみかんに変更になり
みかんを注文しました。と返ってくる。
food.fruit
その後、fruitの引数に何も渡されていないので、デフォルトのりんごになっている。結果、
りんごを注文しました。と返ってくる。