PythonとRubyのタプルアンパッキングの違い
昼休みの雑談でRubyのタプルアンパッキングは個数がミスマッチでもエラーにならないと知ってびっくりした。
余ったら捨てられる。
irb(main):007:0> x, y = 1, 2, 3 => [1, 2, 3] irb(main):008:0> x => 1 irb(main):009:0> y => 2
足りなかったらnilで埋められる。
irb(main):010:0> x, y, z = 1, 2 => [1, 2] irb(main):011:0> x => 1 irb(main):012:0> y => 2 irb(main):013:0> z => nil
ちなみにPythonでは個数のミスマッチはValueError例外が飛ぶ。
>>> x, y = 1, 2, 3 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack
>>> x, y, z = 1, 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: need more than 2 values to unpack
https://github.com/nishio/learn_language/blob/master/coderunner/test/tuple_unpacking.py