簡體   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