在模块上定义的实例方法:
module A
def foo; :bar end
end
当包含该模块时,似乎可以将其称为该模块的模块方法:
include A
A.foo # => :bar
这是为什么?
您正在将A包含到对象中。
module A
def self.included(base)
puts base.inspect #Object
end
def foo
:bar
end
end
include A
puts A.foo # :bar
puts 2.foo # :bar
#puts BasicObject.new.foo #this will fail
还要注意,顶层对象main
是特殊的;它既是Object的实例,又是Object的一种委托者。
参见http://banisterfiend.wordpress.com/2010/11/23/what-is-the-ruby-top-level/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句