1
我嘗試實施循環和無限循環檢查,因此,如果週期執行超過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")
它的工作原理,但我希望有非函數簽名像經典的同時:
var i = 0
guardedWhile(i < 5){
println(i)
}
現在我有:
var i = 0
guardedWhile(() => i < 5)(() => {
println(i)
i += 1
})