采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
// 每一个分支的最后一个表达式的值就是when表达式在这种条件下的结果. fun hasPrefix(x: Any) = when (x) { is String -> x.startsWith("prefix") else -> false }
上面的函数为什么不需要添加返回值类型: Boolean ? 上面的代码,从语法该如何分析? when表达式返回了一个Boolean结果,把这个结果赋值给了hasPrefix函数,总感觉有些别扭
你可以这么理解,函数调用其实也是一个表达式,他的值就等于后面的表达式的值,类型自然就是后面的表达式的值的类型。
后面的表达式的类型编译期是确定的,是Boolean,那么你不明确写,编译器就会帮你推导出来函数的返回值类型。
这个写法实际上很形象的强化了表达式的概念。
上面回答的是编译器的智能推导,那表达式赋值给一个函数,这个该怎么理解?
这个是函数的定义方式,不能叫赋值。如果函数体内只有一个表达式,它的值就是函数返回值的话,就可以采用这种写法。 你可以认为是函数的简化形式,如果你觉得困惑,就不要把他理解成赋值,记住函数可以这么写就行了。
非常感谢!
登录后可查看更多问答,登录/注册
Google I/O大会钦定Android一级开发语言,现在不学,等待何时
1.4k 3
1.1k 1
1.1k 15
1.4k 15
1.6k 14