多重代入で色々やってみる
multiple_assignment.rb
a,b,c = 1,2 # cにはnilが入る!
p [a,b,c]
a,b,c = 1,2,3,4 # *を付けていないので4は溢れる
p [a,b,c]
a,b,*c = 1,2,3,4 # cには余った数値が配列になって代入される!
p [a,b,c]
a,*b,c = 1,2,3,4 # bに余った数値が(以下同文)!
p [a,b,c]
a,b = 0,1
a,b = b,a # 交換処理!
p [a,b]
ary = [1,[2,3],4]
a,b,c = ary
print a,b,c
puts
a,(b1,b2),c = ary
print [a,b1,b2,c]
result
[1, 2, nil]
[1, 2, 3]
[1, 2, [3, 4]]
[1, [2, 3], 4]
[1, 0]
1[2, 3]4
[1, 2, 3, 4]
結論
-
交換処理に
wやtmpを使わないなんて… - 変数に
*を付けるとその変数は余った数値を配列として全部貰ってくる!