前回の記事 に引き続き、無名関数中の return 文の仕組みについて調べてみる。
今回は 匿名関数を引数に引き渡して深い階層からリターンしてくる場合を見てみよう。
今回の Scala コードはこれ。
def main(args:Array[String]) {
println("main start")
test();
println("main finish")
}
private def test() {
val f = () => return;
println("test start")
test2(f);
println("test finish") // 実行されない。
}
def test2(f: () => Unit) {
println("test2 start")
f();
println("test2 finish") // 実行されない。
}
------------------
main start
test start
test2 start
main finish
test2() 内の 匿名関数実行で test2()、test() を一気に脱出している。