2012-04-15 42 views

回答

5

如果你正在尋找有一個名爲一樣範圍的變量塊局部變量塊中定義沒有設置先前定義的變量,你可以使用這個語法:

foo = 1 
items.each do |item;foo| 
    foo = item.number 
end 
puts foo #=> 1 

您也可以在不通過塊變量的情況下執行此操作:

x = Proc.new { |;foo| ... } 

請注意,這只是Ruby 1.9+。

+0

我不知道你能做到這一點!這個東西的文檔在哪裏? – 2012-04-16 05:24:33

+0

@MichaelSlade我不知道這是在文檔中,它主要是覆蓋核心和標準庫中的方法。我可能從一本書中挑選了這本書,並且我知道前幾個1.9.x版本的發佈日誌,詳細介紹了自1.8.7註釋塊本地變量以來的更改,但我懷疑他們是否會舉例說明。 – coreyward 2012-04-16 20:45:19

+1

一個最新的語言參考將是很好的:/ – 2012-04-16 20:46:29

0

這不是Ruby真的。當地人通過分配創建;除了作爲參數之外,沒有辦法聲明它們。 (並在1.9,這包括塊參數)。

我想Rubyish的方式做類似的事情只是保存和恢復到另一個本地通過分配。

+0

參考我的回答,這些不是*真正的*參數......你不能傳遞參數給他們分配。他們嚴格限定範圍。 – coreyward 2012-04-16 20:40:28