Scala 如何在循环期间实现功能相似
我尝试使用无限循环检查实现while循环,所以如果循环执行的次数超过Scala 如何在循环期间实现功能相似,scala,Scala,我尝试使用无限循环检查实现while循环,所以如果循环执行的次数超过CONST次,它就会抛出异常: val MAX_CYCLES = 1000000 @throws(classOf[InfinityLoopException]) def guardedWhile(condition: () => Boolean)(body: () => Unit): Unit = { var cnt = 0 while (condition.apply()) { body.appl
CONST
次,它就会抛出异常:
val MAX_CYCLES = 1000000
@throws(classOf[InfinityLoopException])
def guardedWhile(condition: () => Boolean)(body: () => Unit): Unit = {
var cnt = 0
while (condition.apply()) {
body.apply()
if (cnt > MAX_CYCLES) throw new InfinityLoopException()
cnt += 1
}
}
class InfinityLoopException() extends RuntimeException("Loop executed " + MAX_CYCLES + " cycles")
它可以工作,但我希望有非函数签名,如classic while:
var i = 0
guardedWhile(i < 5){
println(i)
}
var i=0
保护期(i<5){
println(i)
}
目前我有:
var i = 0
guardedWhile(() => i < 5)(() => {
println(i)
i += 1
})
var i=0
当(()=>i<5)(()=>{
println(i)
i+=1
})
将参数更改为按名称调用
def guardedWhile(condition: => Boolean)(body: => Unit): Unit = { ...
然后直接引用它们
while (condition) {
body
. . .
按名称调用意味着每次引用它们时都会重新计算它们