module Steppable
¶
Implements a #step
method for iterating from a value.
Direct including types
Char
Number
Time
Time::Span
Methods¶
#step(*, to limit = nil, by step, exclusive : Bool = false, &) : Nil
¶
(*, to limit = nil, by step, exclusive : Bool = false, &) : Nil
Iterates from self
to limit incrementing by the amount of step on each
iteration.
If exclusive is true
, limit is excluded from the iteration.
ary = [] of Int32
1.step(to: 4, by: 2) do |x|
ary << x
end
ary # => [1, 3]
1.step(to: 4, by: 2).to_a # => [1, 3]
1.step(to: 4, by: 1).to_a # => [1, 2, 3, 4]
1.step(to: 4, by: 1, exclusive: true).to_a # => [1, 2, 3]
The type of each iterated element is typeof(self + step)
.
If to is nil
, iteration is open ended.
The starting point (self
) is always iterated as first element, with two
exceptions:
* if self
and to don't compare (i.e. (self <=> to).nil?
). Example:
1.0.step(Float::NAN)
* if the direction of to differs from the direction of by
. Example:
1.step(to: 2, by: -1)
In those cases the iteration is empty.
#step(*, to limit = nil, by step, exclusive : Bool = false)
¶
(*, to limit = nil, by step, exclusive : Bool = false)
Iterates from self
to limit incrementing by the amount of step on each
iteration.
If exclusive is true
, limit is excluded from the iteration.
ary = [] of Int32
1.step(to: 4, by: 2) do |x|
ary << x
end
ary # => [1, 3]
1.step(to: 4, by: 2).to_a # => [1, 3]
1.step(to: 4, by: 1).to_a # => [1, 2, 3, 4]
1.step(to: 4, by: 1, exclusive: true).to_a # => [1, 2, 3]
The type of each iterated element is typeof(self + step)
.
If to is nil
, iteration is open ended.
The starting point (self
) is always iterated as first element, with two
exceptions:
* if self
and to don't compare (i.e. (self <=> to).nil?
). Example:
1.0.step(Float::NAN)
* if the direction of to differs from the direction of by
. Example:
1.step(to: 2, by: -1)
In those cases the iteration is empty.