コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyで , 区切りの代入は配列扱い

タプルっぽい動きではあるが、そういう機構ではない。

環境

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

どういうものか

a,b  = 1,2

のような記述の話。

上記のような個別になるが、格納先がひとつだと配列として入る

a = 1,2
#=> [1, 2]
a.class
#=> Array

原理

これは多重代入という名前で定義されているRubyの機能に準じる

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

参考リンク