ruby 多重代入

http://docs.ruby-lang.org/ja/1.9.3/doc/spec=2foperator.html
多重代入

例:

foo, bar, baz = 1, 2, 3
foo, = list()
foo, *rest = list2()

文法:

式 [`,' [式 `,' ... ] [`*' [式]]] = 式 [, 式 ... ][`*' 式]
`*' [式] = 式 [, 式 ... ][`*' 式]

多重代入は複数の式または配列から同時に代入を行います。左辺の 各式はそれぞれ代入可能でなければなりません。右辺の式が一つし か与えられなかった場合、式を評価した値は配列に変換されて、各 要素が左辺のそれぞれの式に代入されます。左辺の要素の数よりも 配列の要素の数の方が多い場合には、余った要素は無視されます。 配列の要素が足りない場合には対応する要素の無い左辺には nil が代入されます。

左辺の最後の式の直前に * がついていると、対応する 左辺のない余った要素が配列として代入されます。余った要素が 無い時には空の配列が代入されます。

例:

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]