现在我正在研究Ruby的概念。我有VB背景,有一些概念我还不太理解。Yield就是其中之一。我理解它在实际意义上是如何工作的,但没有看到收益的意义,也没有看到我何时以及如何充分利用它的潜力。
发布于 2011-10-01 03:43:49
Yield是Ruby中更大的闭包系统的一部分。它是该语言的一个非常强大的部分,您可以在您遇到的每个Ruby脚本中找到它。
http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/
发布于 2011-10-01 04:13:11
了解yield是如何工作的很好,但我很少使用它,我认为其他人也是如此。对这个答案的评论可能表明并非如此。
Ruby的yield语句将控制权交给给该方法的一个块。在代码块完成后,控制返回给该方法,并且它继续在yield之后直接执行该语句。
下面是过度使用的Fibonacci序列的一个变体
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发布于 2011-10-01 03:44:08
好读物:http://blog.codahale.com/2005/11/24/a-ruby-howto-writing-a-method-that-uses-code-blocks/
https://stackoverflow.com/questions/7615269
复制相似问题