gpt4 book ai didi

ruby - 在 Ruby 中表达无限枚举数 `(1..Inf)` 的常用快速方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:41 25 4
gpt4 key购买 nike

我认为无限枚举器对于编写 FP 风格的脚本来说非常方便,但我还没有找到一种在 Ruby 中构建这种结构的舒适方法。

我知道我可以显式构造它:

a = Enumerator.new do |y|
i = 0
loop do
y << i += 1
end
end
a.next #=> 1
a.next #=> 2
a.next #=> 3
...

但是对于这样一个简单的结构来说,这太冗长了。

另一种方法是使用 Float::INFINITY 的“hack”:

b = (1..Float::INFINITY).each
b = (1..1.0/0.0).each

这两个可能是我能给出的最不笨拙的解决方案。虽然我想知道是否有其他更优雅的方式来构造无限枚举器。 (顺便说一句,为什么 Ruby 不直接将 infinfinity 作为 Float::INFINITY 的文字?)

最佳答案

使用#to_enum#lazy转换你的 RangeEnumerable .例如:

(1..Float::INFINITY).to_enum
(1..Float::INFINITY).lazy

关于ruby - 在 Ruby 中表达无限枚举数 `(1..Inf)` 的常用快速方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com