Kotlin进阶实战
上QQ阅读APP看书,第一时间看更新

4.1.3 非局部返回以及crossinline的使用

1.非局部返回(non-local returns)

普通的return默认返回的函数是当前fun所定义的函数,这叫作局部返回(local return)。

在Lambda表达式内部不能让外部函数返回,所以在Lambda表达式中使用return是被禁止的。

但是,由于内联函数的特性,可以在Lambda表达式中使用return返回外部函数。这种返回方式被称作非局部返回(non-local returns)。

使用noinline的Lambda表达式也不支持非局部返回。

2.crossinline的使用

内联函数默认支持非局部返回,而crossinline修饰的Lambda表达式不允许非局部返回。

例如: