2011-09-30 91 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。猜测我在那里过于主观。 –