2011-09-30 58 views
4

立即通過Ruby概念工作。從VB背景來看,有一些概念我還沒有完全掌握。收益率就是其中之一。我理解它是如何在實際意義上運作的,但卻沒有看到收益率的重要性,或者我何時以及如何充分利用它的潛力。紅寶石概念 - 收益率

回答

1

這是件好事,產量是如何工作的理解,但我很少用它,並認爲同是對他人真實的。對這個答案的評論可能表明另有說明。

Ruby的yield語句將控件移交給給該方法的塊。塊完成後,控制權返回給方法,並在yield之後直接執行語句。

這裏的過度使用斐波那契序列的變異體

def fib(upto) 
    curr, succ = 1, 1 
    while curr <= upto 
     puts "before" 
     yield curr 
     puts "after" 
     curr, succ = succ, curr+succ 
    end 
end 

你然後調用的東西的方法類似

fib(8) {|res| puts res} 

和輸出將是

before 
1 
after 
before 
1 
after 
before 
2 
after 
before 
3 
after 
before 
5 
after 
before 
8 
after 
+2

「實際上你幾乎不會使用它」 - 這很大程度上取決於你的操作。在我們的產品應用中,我們有很多地方使用「yield」。 –

+0

我經常使用yield。 –

+0

我使用經常使用yield的代碼,但我很少自己寫任何yield。猜測我在那裏過於主觀。 –