Introduction to Delimited Continuations/Using shift and reset
Let's rewrite run
using Scala's delimited continuations primitives, shift
and reset
.
def run() = reset {
println("What is your name?")
val name = shift { k: (String => Unit) =>
val name = readln()
k(name)
}
println("Hello, " + name + "!")
}
The flow of the program has not changed. Printing the second message to the screen becomes a continuation of type String => Unit
, which is passed into the shift
block as the function k
, to be invoked with the user's input.
|