Scala中“ return”语句的目的是什么?

Jus12:

return在Scala 中提供语句有什么真正的理由吗?(除了更加“ Java友好”之外)

戴夫·格里菲斯(Dave Griffith):

忽略嵌套函数,总是可以用具有无返回值的等效计算来用返回值替换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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Python 中,return 语句中尾随逗号的目的是什么?

Scala中的空特性的目的是什么

C中的“ switch 0”语句的目的是什么?

立即调用的函数中的“ new Function(“ return this”)()`的目的是什么

导航抽屉中的return语句是什么意思?

在C ++ 11中,“ return {}”语句是什么意思?

PHP Function中的return empty语句是什么意思

scala.runtime中这些Java文件的目的是什么?

Scala中的双方法括号的目的是什么?

Scala中方括号中的目的A是什么

在JavaScript中创建别名的目的是什么?此JavaScript语句有什么作用?

数组推送调用后方括号中的语句的目的是什么?

if语句中批处理文件中的点的目的是什么?

宏中'_'的目的是什么

Clojure中#_的目的是什么?

Scala中的DSL是什么?

无形(scala)中的“ at”是什么?

在Html.BeginForm中使用onsubmit参数中的return的目的是什么?

Rails,webpacker:在哪里/何时在类中使用import语句,以及pack / application.js中要求的目的是什么?

信号量wait()函数中while循环的目的是什么?可以用if语句代替吗?

Scala中类定义之后的第一行中像lambda定义的语句是什么?

Angular2中的“ ...”是什么?目的是什么?

MVC中的MemoryCache的目的是什么?

Rust中单位类型的目的是什么?

Angular中setTimeout的目的是什么?

addToBackStack(null)中null的目的是什么?

JVM中的“布尔”类型的目的是什么?

Java流中flush()的目的是什么?

基础中项目类型的目的是什么