🗂
[Bug #20468] for 文でぼっち演算子を用いた場合の代入について
[Bug #20468] Segfault on safe navigation in for target
- 次のように
for
文でぼっち演算子を使うと segv するというバグ報告
for foo&.bar in []; end
- こういうコードかけるんですね知らんかった
- 上記のようなコードだとループ毎に内部で
foo.bar=
が呼ばれるんですね
class Foo
def bar=(value)
pp value
end
end
foo = Foo.new
nil&.bar = 1
# 内部で foo.bar = が呼ばれる
for foo.bar in [1, 2, 3]; end
__END__
output:
1
2
3
-
foo&.bar
の場合にどういう挙動になるのか、って議論がされているんですが以下のような挙動が期待されるんですかねー
for temp in [1, 2, 3]
foo&.bar = temp
end
- ちなみに単に
nil
と書いた場合は SyntaxError になりますね
# error: Can't assign to nil (SyntaxError)
for nil in [1, 2, 3]; end
Discussion