👏

[Bug #20637] メソッド内でクラス/モジュールを定義したときの話

2024/07/17に公開

[Bug #20637] SyntaxError class definition in method body can be bypassed

  • クラスやモジュールはメソッド定義の中で定義しようとするとエラーになる
def hoge
  # error: class definition in method body (SyntaxError)
  class X; end
end
  • しかし、以下のように class << ではエラーにならない
def hoge
  class << Object.new
    # no error
    class  X; end
  end
end

hoge
  • def だとクラスを定義するスコープが不明なんですが class << の場合は定義するスコープが明確なのでそういう違いがあるんですかねー
GitHubで編集を提案

Discussion