我正在尝试将一个模块混合到一个类中,并且我希望某些方法充当类方法,而其他方法则充当实例方法。
但是,我不想同时include
使用 extend
模块。我宁愿只是include
它。
当我用这种表示法包装我想成为类方法的方法时,它可以工作:
class <<
# ...
end
但是,当我使用此表示法时,它不起作用:
class << self
# ...
end
我怀疑self
关键字是建立与模块的显式绑定,而不是它混入的类。但是我没有看到任何文档建议self
在使用class <<
符号时关闭关键字。
有谁知道这是怎么回事?
更新:为了更清楚,这里有一些示例代码:
module M
class <<
def class_method
puts "From inside the class_method"
end
end
def instance_method
puts "From inside the instance_method"
end
end
class Object
include M
end
class C
end
C.class_method
obj = C.new
obj.instance_method