什么时候评估一个块?

时间:2015-07-01 03:19:47

标签: ruby

我试图在以下示例中理解xml.send方法调用的语法:

  builder = Nokogiri::XML::Builder.new(opt) do |xml|
    xml.send(rootTag) {
      data.each { |e| generate_xml(e, xml) }
    }
  end

xml.send方法调用似乎后跟一个块。块是作为参数传递给方法的吗?是否评估了块并将结果传递给方法?它只是在方法之后运行吗?

注意我认为这是一般的Ruby语法问题,而不是Nokigiri特定问题(仅作为示例)。

1 个答案:

答案 0 :(得分:1)

以下块作为send

中包含的方法的参数传递给rootTag
{
  data.each { |e| generate_xml(e, xml) }
}

当块传递给方法时,该方法控制是否/何时使用yield来评估块。