【Kotlin学习】高阶函数的控制流——lambda的返回语句和匿名函数

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

高阶函数的控制流

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的代码处执行。要区分局部返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值