前回の記事 に引き続き、無名関数中の 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() を一気に脱出している。