jestem zabawy z przykładów kodu związanych Scala w działaniu książki http://www.manning.com/raychaudhuri/parametry funkcyjne i bez() w Scala
cytując https://github.com/nraychaudhuri/scalainaction/blob/master/chap01/LoopTill.scala
// Run with >scala LoopTill.scala or
// run with the REPL in chap01/ via
// scala> :load LoopTill.scala
object LoopTillExample extends App {
def loopTill(cond: => Boolean)(body: => Unit): Unit = {
if (cond) {
body
loopTill(cond)(body)
}
}
var i = 10
loopTill (i > 0) {
println(i)
i -= 1
}
}
W powyższym kodzie cond: => Boolean
gdzie jestem zdezorientowany. Po zmianie tego na cond:() => Boolean
nie udało się.
mógłby ktoś wytłumaczyć mi, co jest różnica między
cond: => Boolean
i
cond:() => Boolean
prawda obaj reprezentują params dla funkcji?
Zobacz http://stackoverflow.com/a/1203799/724361. –
Są zasadniczo takie same. Oba kompilują się do Function0 [Boolean]. Jedyna różnica polega na tym, że call-by-name (cond: => Boolean) jest nieco krótszy, ponieważ nie trzeba pisać loopTill (() => i> 0) (...) – ZhekaKozlov