我的任务是编写一个repeat
可以像这样使用的自定义控制结构:
var i = 0
repeat {
i = i + 1
}(i > 5)
我目前有以下代码:
def repeat(f: => Unit): ((=> Boolean) => Unit) = {
(x) => {
while (x) f
}
}
运行它时,似乎 f ( i = i + 1
) 永远不会执行。
老实说,我不完全确定当前的类型x
是什么。这显然是不正确的,但我没有足够的知识知道从这里去哪里。
我曾经有这个:
def repeat(f: => Unit): ((=> Boolean) => Void) = {
(x: (=> Boolean)) => {
while (x) f
}
}
尽管这显然是不正确的 Scala,但我认为它更好地表明了我的意图。
很抱歉,如果我的问题有点宽泛/证明了毫不费力,但是名称参数的概念对我来说是非常新的,并且在我的书(Scala 编程)中没有解释超出基础知识。