这是一个简单的例子:
def abc
puts 'abc'
end
class Foo
def self.bar
abc
end
end
Foo.bar
这会中断,因为abc
在内部未定义Foo.bar
。有没有办法告诉班级“继承”本地绑定以完成上述工作?我基本上是在尝试为“bar”方法创建一个简单的命名空间。
我的第一次尝试是从当前的 eigenclass ( class Foo < (class << self; self; end)
) 子类化,但你不能子类化一个虚拟类。另外,虽然我可以显式地传入绑定并在里面使用 eval ,但这不是我想要的。