[英]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
推斷只是給出表達式可能值類型的最接近的祖先。
在這里,您的表達式可以產生Boolean
或Int
。 在這種情況下,最近的祖先是Comparable<*>
,所以這是 function 的返回類型。
如果類型完全不相關,則共同祖先將是Any
,它在 Kotlin 中是所有不可為空類型的共同祖先。 如果其中一個值也可以是 null,那么您最終可能會得到一個返回類型是Any?
,它是 Kotlin 中所有類型的最終父級(類似於 Java 的Object
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.