【问题标题】:triangular_numbers enumerator yielder yield三角数 单数 产量 产量
【发布时间】:2014-03-02 14:17:59
【问题描述】:
 triangular_numbers = Enumerator.new do |yielder|
 number = 0
 count = 1
     loop do
         number += count
         count += 1
         yielder.yield number
     end
 end
 5.times { print triangular_numbers.next, " " }
 puts

我知道你们之前都回答过这方面的问题。

我正在尝试更多地了解正在发生的事情

我说得对吗 yielder 是一个可能是哈希或数组的参数,并且 yielder.yield number 基本上是将其上的任何数字推入该数组。

我还看到人们使用 yielder

还有一件事我想知道为什么数字会保持其价值。

【问题讨论】:

    标签: ruby yield enumerator


    【解决方案1】:

    不,它不是数据结构。它是一个对象 - Enumerator::Yielder 的一个实例,如果您单击该链接,您会发现它的文档记录并不好!它是用 C 语言编写的,它拥有的唯一方法是 yield 和别名 <<。您应该让 Ruby 核心自行处理。

    它本质上就像一个管道,由EnumeratorEnumerable 方法在内部使用,以根据需要从枚举中获取项目。例如,Enumerator#next 将从序列中获取下一项。 Enumerable 提供的方法更加全面,并且基于Enumerator 提供的基本操作。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2016-06-08
      • 2015-09-15
      • 1970-01-01
      • 2015-11-14
      • 2018-02-04
      相关资源
      最近更新 更多