tôi đang chơi xung quanh với các ví dụ mã liên quan đến Scala trong Action cuốn sách http://www.manning.com/raychaudhuri/thông số chức năng có và không có() trong Scala
Trích dẫn từ 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
}
}
Trong đoạn code trên cond: => Boolean
là nơi tôi bối rối. Khi tôi đổi thành cond:() => Boolean
thì không thành công.
Có thể ai đó giải thích cho tôi những gì là sự khác nhau giữa
cond: => Boolean
và
cond:() => Boolean
Không phải cả hai đều đại diện cho params cho chức năng?
Xem http://stackoverflow.com/a/1203799/724361. –
Về cơ bản, chúng giống nhau. Cả hai đều biên dịch thành Function0 [Boolean]. Sự khác biệt duy nhất là call-by-name (cond: => Boolean) ngắn hơn một chút vì bạn không cần phải viết loopTill (() => i> 0) (...) – ZhekaKozlov