高阶函数的控制流
lambda中的返回语句:从一个封闭的函数返回
在一个普通循环中使用return

在传递给forEach的lambda中使用return

如果你在lambda中使用return关键字,他会从调用lambda的函数中返回,并不只是从lambda返回。这样的return语句叫作非局部返回,因为它从一个比包含return的代码块更大的代码块中返回了。我们可以类比在java中的for循环和synchronized代码块,显然会从函数中返回
要注意只有在以lambda作为参数的函数是内联函数的时候才能从更外层的函数返回。上图forEach的函数体和lambda的函数体一起被内联了,所以在编译的时候很容易做到从包含它的函数中返回。在一个非内联函数的lambda中使用return是不允许的。一个非内联函数可以把传给它的lambda保存在变量中,以便在函数返回以后可以继续使用
从lambda返回:使用标签返回
可以在lambda表达式中使用局部返回,lambda中的局部返回跟for循环中的break表达式相似。它会终止lambda的执行,并接着从调用lambda的代码处执行。要区分局部返回和

这篇博客探讨了在高阶函数中,特别是使用lambda表达式时,return语句如何影响控制流。非局部返回的概念被提出,说明return在lambda中会从外部函数返回。文章还介绍了标签返回,用于在lambda中实现局部返回,以及带标签的this表达式。此外,匿名函数的返回行为也被提及,强调了return在匿名函数中的作用。内容涵盖了函数内联、lambda与匿名函数的区别以及它们在返回语句上的差异。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



