👏
[Bug #20637] メソッド内でクラス/モジュールを定義したときの話
[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 <<
の場合は定義するスコープが明確なのでそういう違いがあるんですかねー
Discussion