# Smallest peeve ever!

I’m sure there’s no chance of this ever changing but I’m disappointed
that the integer method “step”:

start.step(end, step_size)

``````...wasn't more like:
``````

step_size.step(start, end)

``````...I just like having the start and end points grouped together with
``````

the
step size singled out.
Who’s with me?

From: Just Another Victim of the Ambient M.

# Who’s with me?

i’m w you. ruby is with you (quite).

## irb(main):016:0> system “qri range.step” ------------------------------------------------------------- Range#step rng.step(n=1) {| obj | block } => rng

`````` Iterates over rng, passing each nth element to the block. If the
range contains numbers or strings, natural ordering is used.
Otherwise step invokes succ to iterate through range elements.
``````

irb(main):018:0* (0…10).step(2) {|x| p x}
0
2
4
6
8
10
=> 0…10

obviously, by definition of range, it will not cater negative steps

irb(main):030:0> (10…0).step(-2) {|x| p x}
ArgumentError: step can’t be negative

maybe, before i request a change in step, i might as well request a
change in #succ/#next first, like succ receiving an optional argument,
eg…

1.succ #=> 2
(-1).succ #=> 0

1.succ(1) #=> 2
(-1).succ(1 #=> 0

1.succ(2) #=> 3
(-1).succ(2) #=> 1

1.succ(-1) #=> 0
(-1).succ(-1)#=> -2

so then,

irb(main):030:0> (10…0).step(-2) {|x| p x}
10
8
6
4
2
0

I believe facets already does the succ(-n) part, but does not handle
step(-n) which is pretty lame to me, imnho.

kind regards -botp

On Oct 25, 10:25 am, “Just Another Victim of the Ambient M.”
[email protected] wrote:

step size singled out.
Who’s with me?

class Numeric
def mystep(from, to, &block)
raise ArgumentError unless block_given?
from.step(to, self) { |x| yield x }
end
end

5.step(10, 2) { |i| puts i }
2.mystep(5, 10) { |i| puts i }

def mystep(from, to, &block)
third parameter is not necessary, just

def mystep(from, to)