📝

[Bug #19918] Should `a[&b]=c` be syntax valid?

2024/02/13に公開

[Bug #19918] Should a[&b]=c be syntax valid?

  • 以下のコードは現状の Ruby だと有効なコードになる
a[&b]=c
a[&b]+=c
a[&b]&&=c
a[&b]||=c
  • a[&b]=ca.[](c, &b) みたいなコードとして解釈される
class X
  def []=(*args, &block)
    pp args         # => [10]
    pp block.call   # => 42
  end
end

a = X.new
b = proc { 42 }
c = 10
a[&b] = c
  • Prism だとこれがシンタックスエラーになるがこの構文が意図的に動作しているのか質問しているチケット
  • 少なくともテストはあるみたいなので意図的ではあるみたい
GitHubで編集を提案

Discussion