Kotlin 如何使用表达式主体推断 return 类型的函数
How Kotlin inferencing return type of function with expression body
如果函数只包含一个表达式,则可以从该表达式推断出其 return 类型。
这听起来很简单:
fun max(a: Int, b: Int) = if (a > b) a else b
在这种情况下,return 类型的函数将是 Int。
但是下一个例子是什么类型呢?
fun max(a: Int, b: Int) = if (a > b) a else true
推理只是给出了表达式可能值类型的最近祖先。
此处您的表达式可以生成 Boolean
或 Int
。在这种情况下,最近的祖先是 Comparable<*>
,因此这是函数的 return 类型。
如果类型完全不相关,则共同祖先将是 Any
,这在 Kotlin 中是所有不可空类型的共同祖先。
如果其中一个值也可以为 null,你可能会得到一个 return 类型,即 Any?
,它是 Kotlin 中所有类型的最终父类(类似于 Java 的Object
).
如果函数只包含一个表达式,则可以从该表达式推断出其 return 类型。 这听起来很简单:
fun max(a: Int, b: Int) = if (a > b) a else b
在这种情况下,return 类型的函数将是 Int。
但是下一个例子是什么类型呢?
fun max(a: Int, b: Int) = if (a > b) a else true
推理只是给出了表达式可能值类型的最近祖先。
此处您的表达式可以生成 Boolean
或 Int
。在这种情况下,最近的祖先是 Comparable<*>
,因此这是函数的 return 类型。
如果类型完全不相关,则共同祖先将是 Any
,这在 Kotlin 中是所有不可空类型的共同祖先。
如果其中一个值也可以为 null,你可能会得到一个 return 类型,即 Any?
,它是 Kotlin 中所有类型的最终父类(类似于 Java 的Object
).