传递范围#步骤多个参数

时间:2014-07-10 04:19:59

标签: ruby

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)

2 个答案:

答案 0 :(得分:2)

乘法不会返回一个范围,因此不是Range#step - 它是Numeric#step,它取一个端点和一个步数。

答案 1 :(得分:1)

与您声称该方法为Range#step不同,您提到的使用两个参数的方法是Numeric#step。第一个参数是限制,第二个参数是步骤。