函数的返回值类型省略问题

来源: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回答

bennyhuo

2019-09-08

你可以这么理解,函数调用其实也是一个表达式,他的值就等于后面的表达式的值,类型自然就是后面的表达式的值的类型。

后面的表达式的类型编译期是确定的,是Boolean,那么你不明确写,编译器就会帮你推导出来函数的返回值类型。

这个写法实际上很形象的强化了表达式的概念。

0
3
qq_夜_71
非常感谢!
2019-09-08
共3条回复

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程