![]() |
1
2
这个
所以,你使用的这两个选项中的哪一个是100%的个人偏好,就像
|
![]() |
2
5
如果你首先了解收益率是如何工作的,这可能会有所帮助。下面是一个例子:
在do-tuff方法调用中:
..块就像一个函数,它被传递给do-tuff方法。在do-tuff中,yield调用函数并传递指定的参数——在本例中是5。 需要注意的一些重要事项:
好吧,现在让我们看看你的评论问题:
在第二个例子中,任何地方都没有方法定义——所以不能调用yield。错误!因此,这两个例子并不相同。 但是,您可以这样做:
但这是一个有趣的枚举器,因为它不产生任何值——它只执行一些代码(碰巧打印了一些输出),然后结束。这个枚举器几乎等同于:
当枚举器无法生成值时,它会引发StopIteration异常。所以在这两种情况下,枚举器都不能产生值。
不可以。实际上,您可以创建一个枚举器来产生无限多的值。下面是一个例子:
添加一些调试消息应该证明是有洞察力的:
请注意,该消息只打印一次。所以发生了一些不明显的事情:
因为“刚执行Y<<val”消息没有显示在输出中,这意味着执行必须在线路上停止。
什么
发生的是,当
如果Ruby对Yield语句的语法是这样的,可能会更有意义:
我们可以将其解释为:在这里停止执行,然后当e.next被称为productval时。
David Black建议不要使用
|
![]() |
3
3
除非我漏掉了什么
这就产生了:
当他说(第304页)“你 不要 “这样做,”他不是说“这不是最好的方法。”他是说,“那不管用。” 编辑:但是,您可以通过以下方式显式调用yield:
如果你觉得
第二次编辑:看看大卫的原始帖子和乔格的最新答案,我认为最初关于这个问题有一个困惑。乔格认为大卫在问
|
![]() |
cluster1 · 采取独立的新行动的好处是什么? 7 月前 |
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 7 月前 |
![]() |
lucycoco · 如何解决pod安装问题并成功运行pod安装? 11 月前 |
![]() |
Vessel · Ruby-包含任意数量元素的所有排列 11 月前 |