我对 Ruby 相当陌生,但我遇到了这个奇怪的要点,其中函数定义代码写在 do block 代码中。这样做的目的是什么:
module Hi
def self.included(base)
base.class_eval do
def hello; puts 'Hello' end
end
end
end
我确信在继续之前我应该首先了解 Mixin 的概念(我正在深入研究 mixin 之类的东西),但是 def :hello 在 do block 中的使用方式让我感到困惑
最佳答案
这段特定的代码的作用是在包含
此模块的任何类中定义一个方法(hello
)。鉴于此,以下两段代码(大致)等效:
class Foo
include Hi
end
# ...is equivalent to...
class Foo
def hello
puts 'Hello'
end
end
您将找到 Module#class_eval
的文档和 Module.included
信息丰富。
关于ruby - block 内的 def 函数能完成什么任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9663178/