我想知道模块中定义的方法在定义为module_functions,类方法(即'def self.foo')和实例方法(即'def foo')<时的范围的具体细节/ p>
如果将模块包含在不同的类中,行为会如何变化?
我一直在互联网上挖掘,但未能找到一个好的解释。
答案 0 :(得分:3)
在模块上定义了一个类(或更恰当的模块)方法,并将该模块作为接收器调用。当您include YourModule
时,它不会混入。
当您执行include YourModule
时,模块的实例方法将作为调用者的实例方法混合使用。
module_function
方法采用您在模块中定义的实例方法,将其设置为私有(并且在混合时保持私有),并将其转换为公共模块方法。