我的任务是编写一个可以像这样使用的自定义重复结构:
var i = 0
repeat {
i = i + 1
}(i > 5)
最初,我有以下代码:
trait RepeatUntil {
def repeat(f: => Unit)(condition: => Boolean): Unit = {
if (!condition) {
f
repeat(f)(condition)
}
}
}
但是,在运行所有测试时(我作为学生看不到),有一个测试没有成功。在胡乱摆弄我的代码之后,我得到了一个工作特性。我只是不明白为什么我的代码不起作用,而我的初始代码不起作用。他们做的不完全一样吗?
trait RepeatUntil {
def repeat(f: => Unit) (condition: => Boolean): Unit = {
val result = f
if(condition) result else repeat(f)(condition)
}
}