我有一个像这样的函数:def process(update:(Any) => Any, break:terminate)
班级terminate
:
class terminate()
{
private var terminate = false
def apply() = terminate = true
def break() = terminate
}
函数update
引用了对象break
,因此它可以调用同一对象函数break()
得到的process
方法。
函数process
执行一些繁重的昂贵计算,同时调用update()
并获得一些进度更新和中间结果。
由于执行process
函数的时间可能太长,update
函数可能会使用terminate
类中断整个过程。
我应该如何退出process()
(检查其中的if(break.break())
)以保持最佳性能?抛出异常的意思可能不是最好的选择。在if
内进行许多process()
次检查也不好。你觉得怎么样?
这个问题的任何其他解决方案都不会使用单独的终止类来破坏函数调用。