新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)kotlin頂層函數(shù)和函數(shù)表達(dá)式怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、四平網(wǎng)站維護(hù)、網(wǎng)站推廣。
頂層函數(shù)
不同于Java中函數(shù)只能定義在每個(gè)類里面,Kotlin采用了JavaScript 中的做法,可以在文件任意位置處定義函數(shù),這種函數(shù)稱為頂層函數(shù)
編譯后頂層函數(shù)會成為文件類下的靜態(tài)函數(shù),比如在文件名是join.kt下定義的joinToString函數(shù)可以通過JoinKt.joinToSting調(diào)用,其中JoinKt是編譯后的類名。
// 編譯成靜態(tài)函數(shù)// 文件名 join.ktpackage stringsfun joinToString() : String {...}/* Java */import strings.JoinKt;JoinKt.joinToSting(....)
看下上面函數(shù)編譯后的效果:// 編譯成class文件后反編譯結(jié)果
// 編譯成class文件后反編譯結(jié)果@NotNullpublic static final String joinToString(@NotNull Collection collection, @NotNull String separator, @NotNull String prefix, @NotNull String postfix) { Intrinsics.checkParameterIsNotNull(collection, "collection"); Intrinsics.checkParameterIsNotNull(separator, "separator"); Intrinsics.checkParameterIsNotNull(prefix, "prefix"); Intrinsics.checkParameterIsNotNull(postfix, "postfix"); StringBuilder sb = new StringBuilder(prefix); int index = 0; for(Iterator var7 = ((Iterable)collection).iterator(); var7.hasNext(); ++index) { Object element = var7.next(); if (index > 0) {sb.append(separator); } sb.append(element); } sb.append(postfix); String var10000 = sb.toString(); Intrinsics.checkExpressionValueIsNotNull(var10000, "sb.toString()"); return var10000; }// 默認(rèn)函數(shù)值public static String joinToString$default(Collection var0, String var1, String var2, String var3, int var4, Object var5) { if ((var4 & 2) != 0) { var1 = " "; } if ((var4 & 4) != 0) { var2 = "["; } if ((var4 & 8) != 0) { var3 = "]"; } return joinToString(var0, var1, var2, var3);
接下來看下Kotlin中很重要的一個(gè)特性,擴(kuò)展函數(shù)。
擴(kuò)展函數(shù)
擴(kuò)展函數(shù)是類的一個(gè)成員函數(shù),不過定義在類的外面
擴(kuò)展函數(shù)不能訪問私有的或者受保護(hù)的成員
擴(kuò)展函數(shù)也是編譯成靜態(tài)函數(shù)
表達(dá)式函數(shù)體
通過下面這個(gè)簡單的例子看下函數(shù)聲明相關(guān)的概念,函數(shù)聲明的關(guān)鍵字是fun,嗯,比JS的function還簡單。
Kotlin中參數(shù)類型是放在變量:后面,函數(shù)返回類型也是。
fun max(a: Int, b: Int) : Int {if (a > b) {return a } else {return b}}
當(dāng)然, Kotlin是有類型推導(dǎo)功能,如果可以根據(jù)函數(shù)表達(dá)式推導(dǎo)出類型,也可以不寫返回類型。
但是上面的還是有點(diǎn)繁瑣,還能再簡單,在 Kotlin中if是表達(dá)式,也就是有返回值的,因此可以直接return,另外判斷式中只有一行一句也可以省略掉大括號:
fun max(a: Int, b: Int) {return if (a > b) a else b}
還能在簡單點(diǎn)嗎?可以,if是表達(dá)式,那么就可以通過表達(dá)式函數(shù)體返回:
fun max(a: Int, b: Int) = if(a > b) a else b
最終只需要一行代碼。
關(guān)于“kotlin頂層函數(shù)和函數(shù)表達(dá)式怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
當(dāng)前標(biāo)題:kotlin頂層函數(shù)和函數(shù)表達(dá)式怎么用
網(wǎng)站鏈接:http://www.ef60e0e.cn/article/iphshd.html