Lambda 中 if 嵌套的问题

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

报错

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

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

去掉返回值

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

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

去掉 {}

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

PS:

Unit?
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。