the*_*ter 1 ruby optimization loops
我有一个for循环,我希望永远增加.
我的代码:
for a in (0...Float::INFINITY).step(2)
puts a
end
Run Code Online (Sandbox Code Playgroud)
输出:
0.0
2.0
4.0
Etc. Always with "#{a}.0"
Run Code Online (Sandbox Code Playgroud)
有没有办法将无穷大表示为整数,以便输出.0在最后没有预先对循环内容进行任何操作?
附录
你能解释一下你的循环是如何工作的吗?我试图找到最有效的解决方案,因为这个循环将迭代无限,削减几毫秒将大大提高性能.
也...
我将接受最短时间运行到1000000的解决方案
根据benchmark@Sefan和while循环答案,采用相同的时间Fruity,while循环答案需要更短的时间,for循环答案在第二,但多个loop do答案需要更长的时间.
由于其原因超出了这个问题的范围,我创建了另一个问题,解决了为什么某些循环比其他循环更快的问题(/sf/ask/2316213511/循环 - 更快).
Ste*_*fan 10
您可以在Numeric#step不通过限制的情况下使用:
0.step(by: 2) { |i| puts i }
Run Code Online (Sandbox Code Playgroud)
输出:
0
2
4
6
...
Run Code Online (Sandbox Code Playgroud)
你也可以建立自己的Enumerator:
step2 = Enumerator.new do |y|
a = 0
loop do
y << a
a += 2
end
end
step2.each { |i| puts i }
Run Code Online (Sandbox Code Playgroud)
你可以用while true它:
puts a = 0
puts a+=2 while true
Run Code Online (Sandbox Code Playgroud)
顺便说一句,
有没有办法将无穷大表示为整数
没有
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |