如果你用一个模块扩展main
对象,是否可以引用另一个对象中的新方法?
module Mod
def meth
puts "top level"
end
end
extend Mod # --- not include
class My
def meth
puts "instance"
TOP_LEVEL.meth # --- psuedo-code to explain the intention
end
end
My.new.meth # prints "instance", then fails
1条答案
按热度按时间41ik7eoe1#
这是可行的,不需要用户定义的全局var:
另一种
TOPLEVEL_BINDING.eval('meth')
也可以直接调用meth
,但对于非平凡方法,通过receiver
方法返回的“main”对象的句柄可能更方便。顺便说一句,this blog post值得阅读,以帮助理解为什么在处理Ruby顶级时,有些东西可以工作,而有些则不行。