我对Ruby很新,但我遇到了这个奇怪的要点,其中函数def代码写在do-block代码中。这是什么目的:
module Hi
def self.included(base)
base.class_eval do
def hello; puts 'Hello' end
end
end
end
我确信在继续前进之前我应首先得到我的Mixin概念(并且我正在深入探讨mixin和whatnot)但是在do-block中使用def:hello的方式令我感到困惑
答案 0 :(得分:3)
这个特定代码的作用是在hello
这个模块的任何类中定义一个方法(include
)。鉴于此,以下两位代码(大致)等效:
class Foo
include Hi
end
# ...is equivalent to...
class Foo
def hello
puts 'Hello'
end
end
您会找到Module#class_eval
和Module.included
提供信息的文档。