【发布时间】:2015-08-11 14:02:36
【问题描述】:
我正在学习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 变量每次是如何变化的,所以有人可以解释一下它是如何工作的吗?
【问题讨论】:
标签: scala recursion dsl callbyname