什么功能def里面的块完成?

时间:2012-03-12 07:28:47

标签: ruby module block mixins

我对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的方式令我感到困惑

1 个答案:

答案 0 :(得分:3)

这个特定代码的作用是在hello这个模块的任何类中定义一个方法(include)。鉴于此,以下两位代码(大致)等效:

class Foo
  include Hi
end

# ...is equivalent to...

class Foo
  def hello
    puts 'Hello'
  end
end

您会找到Module#class_evalModule.included提供信息的文档。