Lambda 中 if 嵌套的问题

2020-06-17  本文已影响0人  案玉璃青

今天遇见一个奇怪的问题:

报错

因为外层 else 表达式有一个 String 类型返回值,所以这里 u 类型为 () -> Any,它需要一个返回值类型,因此内层 if 被视为外层 if 的取值表达式,必须要有 else 分支。

将外层 else 表达式返回值去掉后不报错:

去掉返回值

此时 u 类型为 () -> Unit,即无返回值 lambda 函数类型,那么 if-else 也就不是取值表达式了,因为不需要返回值。

其实我们只要把最外层 {} 去掉就知道了:

去掉 {}

这样肯定是不行的,因为内层只有一个 if 分支,这样是取不到值的。

PS:

Unit?
上一篇 下一篇

猜你喜欢

热点阅读