return
在Scala 中提供语句有什么真正的理由吗?(除了更加“ Java友好”之外)
忽略嵌套函数,总是可以用具有无返回值的等效计算来用返回值替换Scala计算。这个结果可以追溯到“结构化程序设计”的早期,并且被巧妙地称为结构化程序定理。
使用嵌套函数,情况会发生变化。Scala允许您在一系列嵌套函数内部的深处放置一个“ return”。当执行return时,控制从所有嵌套函数中跳入最里面的包含方法,并从中返回(假定该方法实际上仍在执行,否则抛出异常)。这种堆栈展开可以通过例外方式完成,但不能通过对计算进行机械重组来完成(如果没有嵌套函数,可能会发生这种情况)。
实际上,您想从嵌套函数内部返回的最常见原因是打破命令性的理解或资源控制块。(强制性理解的主体即使看起来像一条语句,也被转换为嵌套函数。)
for(i<- 1 to bezillion; j <- i to bezillion+6){
if(expensiveCalculation(i, j)){
return otherExpensiveCalculation(i, j)
}
withExpensiveResource(urlForExpensiveResource){ resource =>
// do a bunch of stuff
if(done) return
//do a bunch of other stuff
if(reallyDoneThisTime) return
//final batch of stuff
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句