你为什么要用块制作一个模块?

时间:2009-09-10 19:29:18

标签: ruby module

我正在看这条线:

    extensions << Module.new(&block) if block_given?

似乎要创建一个新模块并将其添加到arry。

为什么要从块中构建模块?该块可以是任何东西,然后扩展阵列变得不可预测。

编辑:这是来自Sinatra的基类:

  def register(*extensions, &block)
    extensions << Module.new(&block) if block_given?
    extensions.each do |extension|
      extend extension
      extension.registered(self) if extension.respond_to?(:registered)
    end
  end

2 个答案:

答案 0 :(得分:3)

块中的代码不会比不使用块的模块中的代码“不可预测”。我是否写

module Foo
  def foo() "bar" end
end

Foo = Module.new do
  def foo() "bar" end
end

我得到了同样的效果。两者都允许您扩展另一个类的功能,这是此方法的目的。

答案 1 :(得分:0)

在这种情况下,它允许您在oneliner中传递&amp;块,这使代码更具可读性。