builtins/enumerator/stepping.rb
tests/_examples/builtins/enumerator/stepping.rb in the metorex repository.
# An Enumerator steps through the values a method yields, one at a time.
class Steps
def each
yield "a"
yield "b"
end
def upto(limit)
count = 1
while count <= limit
yield count
count = count + 1
end
end
def pairs
yield 1, 2
yield 3, 4
end
end
steps = Steps.new
letters = steps.to_enum
puts letters.to_a.inspect
puts letters.next
puts letters.next
begin
letters.next
rescue StopIteration => error
puts error.message
end
puts letters.rewind.peek
puts steps.enum_for(:upto, 3).to_a.inspect
puts steps.to_enum(:pairs).to_a.inspect
collected = []
steps.to_enum(:each).each { |value| collected.push value }
puts collected.inspect
object = Object.new
one = object.then
puts one.class.to_s
puts one.size.to_s
puts one.first.equal?(object).to_s
puts object.yield_self.peek.equal?(object).to_s
puts object.is_a?(Enumerable).to_s
puts one.is_a?(Enumerable).to_s
Output:
["a", "b"]
a
b
iteration reached an end
a
[1, 2, 3]
[[1, 2], [3, 4]]
["a", "b"]
Enumerator
1
true
true
false
true