名前渡しパラメータ
面白い。
scala> def add(a: Int, b: Int) = b + a add: (Int,Int)Int scala> def aa() = { println("aa"); 1 } aa: ()Int scala> def bb() = { println("bb"); 3 } bb: ()Int scala> println(add(aa(), bb())) aa bb 4 scala> def add_(a: => Int, b: => Int) = b + a add_: (=> Int,=> Int)Int scala> println(add_(aa(), bb())) bb aa 4
ふむふむ。
scala> def _if(cond: Boolean)(op: => Unit) = if (cond) op _if: (Boolean)(=> Unit)Unit scala> _if (2 > 1) { println("a"); println("b") } a b scala> _if (2 > 3) { println("a"); println("b") }
おー。
scala> def twice(op: => Unit) { op; op } twice: (=> Unit)Unit scala> twice { print("a"); print("b"); println() } ab ab
おーー。
scala> class Times(val n: Int) { | def times(op: => Unit) = for (i <- 1 to n) op | } defined class Times scala> implicit def intToTimes(n: Int) = new Times(n) intToTimes: (Int)Times scala> 3 times { println("ab") } ab ab ab
おーーー。