Ruby文档显示Range#step接受一个参数。它似乎用于以传递给step
的数字的增量迭代范围。
(0..100).step(5) { |x| puts x }
应该产生:
0
5
10
15
...
在eratosthenes筛子的例子中,人们正在通过Range#step
看似两个论点here:
(primes[index] * 2).step(primes.last, primes[index]) do
这里发生了什么?当你传递step
两个参数时会发生什么?当我用类似的东西测试它时:
(0..100).step(5,10) { |x| puts x }
我明白了:
ArgumentError:错误的参数数量(2为0..1)
答案 0 :(得分:2)
乘法不会返回一个范围,因此不是Range#step - 它是Numeric#step,它取一个端点和一个步数。
答案 1 :(得分:1)
与您声称该方法为Range#step
不同,您提到的使用两个参数的方法是Numeric#step
。第一个参数是限制,第二个参数是步骤。