函数的返回值类型省略问题
来源:3-5 基本运算符

qq_夜_71
2019-09-08
// 每一个分支的最后一个表达式的值就是when表达式在这种条件下的结果.
fun hasPrefix(x: Any) = when (x) {
is String -> x.startsWith("prefix")
else -> false
}
上面的函数为什么不需要添加返回值类型: Boolean ?
上面的代码,从语法该如何分析?
when表达式返回了一个Boolean结果,把这个结果赋值给了hasPrefix函数,总感觉有些别扭
写回答
1回答
-
你可以这么理解,函数调用其实也是一个表达式,他的值就等于后面的表达式的值,类型自然就是后面的表达式的值的类型。
后面的表达式的类型编译期是确定的,是Boolean,那么你不明确写,编译器就会帮你推导出来函数的返回值类型。
这个写法实际上很形象的强化了表达式的概念。
032019-09-08