2015-07-01 121 views
-3

我想了解在下面的例子中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特定的問題(這只是示例)。當一個塊被傳遞給方法

+0

你問爲什麼塊沒有參數?像'5.times {puts'hello'}'? –

+1

你的問題不清楚。一方面,你似乎想知道塊的語法。但另一方面,你似乎明白這一點,並且正在詢問塊的評估時間。如果你想問一個普通的Ruby問題,你不應該使用這樣的具體例子,你不應該用nokogiri標記它。請編輯該問題。 – sawa

+1

不僅是@sawa所說的,也不是指定哪個塊正在尋址的方法。一個比詢問可能被問到的問題更爲複雜的例子。它根本不清楚。 – vgoff

回答

1

下列塊被傳遞給send作爲包含在所述方法的參數在rootTag

{ 
    data.each { |e| generate_xml(e, xml) } 
} 

,該方法控制是否/何時評價使用yield塊。