Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

86 lines (72 sloc) 1.671 kB
class Fancy {
class BreakIteration : StdError {
"""
Raised to break the current iteration.
It is rescued by Block#loop.
Example:
10 times: |i| {
i println
if: (i == 3) then: {
Fancy BreakIteration new raise!
}
}
\"Done!\" println
Produces:
0
1
2
3
Done!
"""
read_slots: ['result]
def initialize: @result
}
class NextIteration : StdError {
"""
Raised to continue with next iteration (and stopping the current one).
It is rescued by Block#loop.
"""
read_slots: ['result]
def initialize: @result
}
class StopIteration : StdError {
"""
Raised to stop the iteration, in particular by Enumerator#next.
It is rescued by Block#loop.
Example:
{
'Hello println
Fancy StopIteration new raise!
'World println
} loop
'Done! println
Produces:
Hello
Done!
"""
def initialize { @result = nil }
def initialize: @result
def result {
"""
Returns the return value of the iterator.
o = Object new
def o each: block {
block call: [1]
block call: [2]
block call: [3]
100
}
e = o to_enum
e next p #=> 1
e next p #=> 2
e next p #=> 3
try {
e next
} catch Fancy StopIteration => ex {
ex result p #=> 100
}
"""
@result
}
}
}
Jump to Line
Something went wrong with that request. Please try again.