繁体   English   中英

Kotlin 如何用表达式体推断 function 的返回类型

[英]How Kotlin inferencing return type of function with expression body

如果 function 仅包含一个表达式,则可以从该表达式推断其返回类型。 这听起来很简单:

fun max(a: Int, b: Int) = if (a > b) a else b

在这种情况下,function 的返回类型将为 Int。

但是下一个示例中将是什么类型?

fun max(a: Int, b: Int) = if (a > b) a else true

推断只是给出表达式可能值类型的最接近的祖先。

在这里,您的表达式可以产生BooleanInt 在这种情况下,最近的祖先是Comparable<*> ,所以这是 function 的返回类型。

如果类型完全不相关,则共同祖先将是Any ,它在 Kotlin 中是所有不可为空类型的共同祖先。 如果其中一个值也可以是 null,那么您最终可能会得到一个返回类型是Any? ,它是 Kotlin 中所有类型的最终父级(类似于 Java 的Object )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM