PerlerのRuby日記

Rubyとか

デフォルト引数を入れる変数を2個

デフォルト引数を入れる変数を2個

作ることもできると知ったのでメモ。

def hoge(foo = bar = 123)
  puts "foo: #{foo}"
  puts "bar: #{bar}"
end

hoge(234)
#=> foo: 234
#=> bar:

hoge
#=> foo: 123
#=> bar: 123

引数を渡してhogeをcallしたときに、barの扱いが

NameError: undefined local variable or method `bar' for main:Object

になるかと思ったけど、

bar = 1 if false

のような、宣言だけはされていて、nilが入っているみたいな感じになるみたい。


こんなんどこで使うねんと思ったけどSinatraで使われていてこの存在を知った。