我正在学习 scala,我遇到了以下代码。
def whileLoop(cond: => Boolean)(body: => Unit): Unit =
if (cond) {
body
whileLoop(cond)(body)
}
var i = 10
whileLoop (i > 0) {
println(i)
i -= 1
}
输出是数字 10 到 1。
所以 cond 和 body 都是“按名称调用”参数。这意味着它们在函数中使用时会被评估。如果我理解正确的话。我不明白的是身体如何
println(i)
i -= 1
应用的每个递归级别的变化,主体随着变量 i 的变化而变化。但这究竟是如何工作的呢?每次传递相同的函数体时,对我来说这个函数保持不变,但运行程序会向我显示其他情况。我知道每次都会评估该函数,但我不明白里面的 i 变量每次是如何变化的,所以有人可以解释一下它是如何工作的吗?