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.

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?

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

:frowning:

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?

You can help yourself :slight_smile:

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)