首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby概念- Yield

Ruby概念- Yield
EN

Stack Overflow用户
提问于 2011-10-01 03:40:25
回答 3查看 1.8K关注 0票数 4

现在我正在研究Ruby的概念。我有VB背景,有一些概念我还不太理解。Yield就是其中之一。我理解它在实际意义上是如何工作的,但没有看到收益的意义,也没有看到我何时以及如何充分利用它的潜力。

EN

回答 3

Stack Overflow用户

发布于 2011-10-01 03:43:49

Yield是Ruby中更大的闭包系统的一部分。它是该语言的一个非常强大的部分,您可以在您遇到的每个Ruby脚本中找到它。

http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/

票数 4
EN

Stack Overflow用户

发布于 2011-10-01 04:13:11

了解yield是如何工作的很好,但我很少使用它,我认为其他人也是如此。对这个答案的评论可能表明并非如此。

Ruby的yield语句将控制权交给给该方法的一个块。在代码块完成后,控制返回给该方法,并且它继续在yield之后直接执行该语句。

下面是过度使用的Fibonacci序列的一个变体

代码语言:javascript
复制
def fib(upto) 
  curr,  succ = 1, 1 
  while curr <= upto
      puts "before"
      yield curr
      puts "after"
      curr, succ = succ, curr+succ 
  end 
end

然后调用该方法,如下所示

代码语言:javascript
复制
fib(8) {|res| puts res}

输出结果将是

代码语言:javascript
复制
before
1
after
before
1
after
before
2
after
before
3
after
before
5
after
before
8
after
票数 1
EN

Stack Overflow用户

发布于 2011-10-01 03:44:08

好读物:http://blog.codahale.com/2005/11/24/a-ruby-howto-writing-a-method-that-uses-code-blocks/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7615269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档