Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在Ruby中表示无限枚举数`(1..Inf)`的常用快速方法是什么?_Ruby_Enumerator - Fatal编程技术网

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

什么';在Ruby中表示无限枚举数`(1..Inf)`的常用快速方法是什么?,ruby,enumerator,Ruby,Enumerator,我认为无限枚举器对于编写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 ... 这两个可能是我能给出的最不笨拙的解决方案。尽管我想知道是否还有其他更优雅的方法来构造无

我认为无限枚举器对于编写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
...

这两个可能是我能给出的最不笨拙的解决方案。尽管我想知道是否还有其他更优雅的方法来构造无限枚举数。(顺便问一下,为什么Ruby不直接将
inf
infinity
作为
Float::infinity
?)的文本)

我个人会为此创建自己的Ruby类

class NaturalNumbers
  def self.each
    i = 0
    loop { yield i += 1 }
  end
end

NaturalNumbers.each do |i|
  puts i
end
使用或将您的转换为。例如:

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

谢谢我不知道什么是懒惰。这似乎是更好地模仿FP原理的一个好方法。如果我想要
def f(n);(1..1.0/0)。每个_带有_对象([]){i,a | a
(1..Float::INFINITY).to_enum
(1..Float::INFINITY).lazy