😺
[Bug #20041] デフォルト引数で分割引数の仮引数を参照した場合の挙動に関するチケット
[Bug #20041] Array destructuring and default values in parameters
- メソッドのデフォルト引数では以下のように前にある引数を参照して割り当てる事ができる
# b のデフォルト値として a が割り当てられる
def foo(a, b = a)
b
end
pp foo([1, 2])
# => [1, 2]
- しかし、以下のような引数の場合に
(x, y)
に割り当てられる前にb = x
が評価されてしまいb = nil
になる
# b のデフォルト値として a が割り当てられる
def foo((x, y), b = x)
[x, y, b]
end
pp foo([1, 2])
# => [1, 2, nil]
- チケットの内容としてはこれが意図する挙動なのかどうかを確認している
- 結果、意図する挙動ではないが実装が難しいらしい
Discussion