【问题标题】:What's the difference between a module function, an instance method and a class method in ruby modules?ruby 模块中的模块函数、实例方法和类方法有什么区别?
【发布时间】:2013-03-24 03:26:30
【问题描述】:

我想知道当模块中定义的方法被定义为module_functions、类方法(即'def self.foo')和实例方法(即'def foo')时,它们是如何作用域的细节

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

我一直在互联网上四处寻找,但找不到好的解释。

【问题讨论】:

    标签: ruby namespaces scope


    【解决方案1】:

    在模块上定义了一个类(或更准确地说是模块)方法,并以模块作为接收者来调用。 include YourModule时不会混进来的。

    include YourModule时,模块的实例方法作为调用者的实例方法混入。

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

    【讨论】:

    • 您可以通过提供一些示例和解释使您的答案更容易理解。
    猜你喜欢
    • 2016-11-19
    • 2017-12-02
    • 2010-11-06
    • 2018-07-09
    • 1970-01-01
    • 2015-04-18
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多