今天遇见一个奇怪的问题:
报错因为外层 else 表达式有一个 String 类型返回值,所以这里 u 类型为 () -> Any,它需要一个返回值类型,因此内层 if 被视为外层 if 的取值表达式,必须要有 else 分支。
将外层 else 表达式返回值去掉后不报错:
去掉返回值此时 u 类型为 () -> Unit,即无返回值 lambda 函数类型,那么 if-else 也就不是取值表达式了,因为不需要返回值。
其实我们只要把最外层 {} 去掉就知道了:
去掉 {}这样肯定是不行的,因为内层只有一个 if 分支,这样是取不到值的。
PS:
Unit?
网友评论