ruby模块中的模块函数,实例方法和类方法有什么区别?

时间:2013-04-02 17:50:32

标签: ruby namespaces scope

我想知道模块中定义的方法在定义为module_functions,类方法(即'def self.foo')和实例方法(即'def foo')<时的范围的具体细节/ p>

如果将模块包含在不同的类中,行为会如何变化?

我一直在互联网上挖掘,但未能找到一个好的解释。

1 个答案:

答案 0 :(得分:3)

在模块上定义了一个类(或更恰当的模块)方法,并将该模块作为接收器调用。当您include YourModule时,它不会混入。

当您执行include YourModule时,模块的实例方法将作为调用者的实例方法混合使用。

module_function方法采用您在模块中定义的实例方法,将其设置为私有(并且在混合时保持私有),并将其转换为公共模块方法。