概要
関数の引数は値渡しが基本であるが、名前渡しパラメータを使えば、 引数が必要になったタイミングで評価させる(=遅延評価)。
↓の例ではconditional部分が名前渡し引数となっている。
環境
Mac OS X 10.9.1
Scala 2.10.3
コード
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45). Type in expressions to have them evaluated. Type :help for more information. scala> def myWhile(conditional: => Boolean)(f: => Unit) { | println("myWhile") | if (conditional) { | f | myWhile(conditional)(f) | } | } myWhile: (conditional: => Boolean)(f: => Unit)Unit scala> scala> var count = 0 count: Int = 0 scala> myWhile(count < 3) { | println("count=" + count) | count += 1 | } myWhile count=0 myWhile count=1 myWhile count=2 myWhile