use*_*348 14 ruby iteration range
我可以像这样迭代
(0..10).step(2){|v| puts v}
Run Code Online (Sandbox Code Playgroud)
但是,由于反转范围等于空范围,我无法以这种方式迭代
(10..0).step(2){|v| puts v}
Run Code Online (Sandbox Code Playgroud)
它什么都没赚到我.当然,我可以这样迭代
10.downto(0){|v| puts v}
Run Code Online (Sandbox Code Playgroud)
但是downto方法不允许我设置除默认1之外的其他步骤.这是非常基本的东西,所以我想应该有一个内置的方法来做到这一点,我不知道.
the*_*Man 22
你为什么不用Numeric#step:
来自文档:
使用从num开始的数字序列调用块,在每次调用时按步长(默认值1)递增.当要传递给块的值大于限制(如果步为正)或小于限制(如果步为负)时,循环结束.如果所有参数都是整数,则循环使用整数计数器进行操作.如果任何参数是浮点数,则所有参数都转换为浮点数,并且循环执行floor(n + n*epsilon)+ 1次,其中n =(limit - num)/ step.否则,循环从num开始,使用<或>运算符将计数器与限制进行比较,并使用+运算符递增自身.
irb(main):001:0> 10.step(0, -2) { |i| puts i }
10
8
6
4
2
0
| 归档时间: |
|
| 查看次数: |
5245 次 |
| 最近记录: |