Rubyの多重代入と可変長引数
Rubyの多重代入・可変長引数はとても便利だが、トリッキーに使ってしまうとコードが追いにくくなる。リファレンスマニュアルには下記のように例が示されている。
foo, bar = [1, 2] # foo = 1; bar = 2 foo, bar = 1, 2 # foo = 1; bar = 2 foo, bar = 1 # foo = 1; bar = nil foo, bar, baz = 1, 2 # foo = 1; bar = 2; baz = nil foo, bar = 1, 2, 3 # foo = 1; bar = 2 foo = 1, 2, 3 # foo = [1, 2, 3] *foo = 1, 2, 3 # foo = [1, 2, 3] foo,*bar = 1, 2, 3 # foo = 1; bar = [2, 3]
基本的には問題ないと思うが、「foo = 1, 2, 3」を配列と解釈するのはどうなのかと思ってしまう。明示的に「*」を付けない限りは一つ目の値を入れてくれた方が(個人的に)しっくりくる。
例えば下記のようなコードを書く。はい、ただのTypoですすみません。
a = 1, b = 2
その変数の中身を出力する。
p a => [1, 2] p b => 2
そりゃないよ、という解釈をされている。