我的印象是 Ruby 中的类定义可以重新打开:
class C
def x
puts 'x'
end
end
class C
def y
puts 'y'
end
end
这按预期工作并y
添加到原始类定义中。
我很困惑为什么以下代码不能按预期工作:
class D
x = 12
end
class D
puts x
end
这将导致NameError
异常。为什么重新打开课程时会启动新的本地范围?这似乎有点违反直觉。扩展类时,有什么方法可以继续以前的本地范围?