【发布时间】:2016-02-20 23:20:59
【问题描述】:
在 Scala 中,您可以从其第一个元素定义一个流,以及从前一个元素获取下一个元素的函数;
Stream.iterate(1)(x => 2 * x + 1)
在 Ruby 中是否存在这样的东西?
我们当然可以手卷它-
module Kernel
def stream
Enumerator.new do |y|
that = self
while true
y << that
that = yield that
end
end
end
end
但它是惯用的吗?已经有这样的东西了吗?
【问题讨论】:
-
不知道你为什么用惰性评估标记这个问题。您可能想查看
Enumerator::Lazy -
用英文书写时请使用英文标点。
-
@CarySwoveland 当然,无论您使用哪种语言,您都必须遵守标点符号规则。但首先,本网站不欢迎除英语以外的其他语言(正如您还评论了一些其他用俄语写的问题)。
-
@CarySwoveland 我在这里使用“when”的意图接近“since”。
标签: ruby functional-programming lazy-evaluation