配列の添字代入
プログラミング言語Rubyを読みつつ、初めてのRubyも読み返したりして、Ruby面白!状態だけど、たまにPerlをかまってあげたくなる不思議。
今日もおや?、と思うところあったので、メモ。
配列の添え字代入
要素数 左辺 < 右辺
Rubyの場合。1.9.2。
ary = [ 'a', 'b', 'c', 'd', 'e', 'f' ] ary[0..2] = [ 'g', 'h', 'i', 'j', 'k' ] p ary #=> ["g", "h", "i", "j", "k", "d", "e", "f"]
左辺の添え字が[0]〜[2]までの「3つの要素」に、「5つの要素」をもつ配列オブジェクトをいれると、「3」が「5」に拡張されるマジック。
splat演算子はなくても展開されてるみたいだ。
Perlの場合。
my @ary = ('a', 'b', 'c', 'd', 'e', 'f'); @ary[0..2] = ('g', 'h', 'i', 'j', 'k'); say "@ary"; #=> g h i d e f
左辺で「3」つなら、右辺からも「3」つしか受け取らない。
要素数 左辺 > 右辺
Rubyの場合。
ary = [ 'a', 'b', 'c', 'd', 'e', 'f' ] ary[0..3] = [ 'g', 'h' ] p ary #=> ["g", "h", "e", "f"]
まさかの切り詰め!!!
Perlの場合。
my @ary = ('a', 'b', 'c', 'd', 'e', 'f'); @ary[0..3] = ('g', 'h'); say "@ary"; #=> g h e f #=> "g", "h", undef, undef, "e", "f"
左辺が「4」つなら、右辺から強引にでも「4」つもらいます!!!
慣れてるからかPerlの方が自然に感じるかな。