| 
 | |||
| Previous < | Contents ^ | Next > | |
|  | 
| class Continuation | 
 | 
Continuation objects are generated by
  Kernel#callcc. They hold a return address and execution
  context, allowing a nonlocal return to the end of the callcc
  block from anywhere within a program. Continuations are somewhat
  analogous to a structured version of C's setjmp/longjmp
  (although they contain more state, so you might consider them closer
  to threads).
  For instance:
| 
arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
callcc{|$cc|}
puts(message = arr.shift)
$cc.call unless message =~ /Max/
 | 
| Freddie Herbie Ron Max | 
| 
callcc {|cont|
  for i in 0..4
    print "\n#{i}: "
    for j in i*5...(i+1)*5
      cont.call() if j == 17
      printf "%3d", j
    end
  end
}
print "\n"
 | 
| 0: 0 1 2 3 4 1: 5 6 7 8 9 2: 10 11 12 13 14 3: 15 16 | 
| instance methods | ||
| call | cont.call( [args]* ) | Invokes the continuation. The program continues from the end of
      the callccblock. If no arguments are given, the originalcallccreturnsnil. If one argument is given,callccreturns it. Otherwise, an array containing
      args is returned.
 | 
| Previous < | Contents ^ | Next > |