【发布时间】:2013-03-24 03:26:30
【问题描述】:
我想知道当模块中定义的方法被定义为module_functions、类方法(即'def self.foo')和实例方法(即'def foo')时,它们是如何作用域的细节
如果将模块包含在不同的类中,行为会发生怎样的变化?
我一直在互联网上四处寻找,但找不到好的解释。
【问题讨论】:
标签: ruby namespaces scope
我想知道当模块中定义的方法被定义为module_functions、类方法(即'def self.foo')和实例方法(即'def foo')时,它们是如何作用域的细节
如果将模块包含在不同的类中,行为会发生怎样的变化?
我一直在互联网上四处寻找,但找不到好的解释。
【问题讨论】:
标签: ruby namespaces scope
在模块上定义了一个类(或更准确地说是模块)方法,并以模块作为接收者来调用。 include YourModule时不会混进来的。
include YourModule时,模块的实例方法作为调用者的实例方法混入。
module_function 方法采用您在模块中定义的实例方法,将其设为私有(混入时仍将保持私有),并将其转换为公共模块方法。
【讨论】: