溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kotlin頂層函數(shù)和函數(shù)表達式怎么用

發(fā)布時間:2021-12-29 16:15:10 來源:億速云 閱讀:148 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細講解有關(guān)kotlin頂層函數(shù)和函數(shù)表達式怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

頂層函數(shù)

不同于Java中函數(shù)只能定義在每個類里面,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;
   }// 默認函數(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中很重要的一個特性,擴展函數(shù)。

擴展函數(shù)

  • 擴展函數(shù)是類的一個成員函數(shù),不過定義在類的外面

  • 擴展函數(shù)不能訪問私有的或者受保護的成員

  • 擴展函數(shù)也是編譯成靜態(tài)函數(shù)

表達式函數(shù)體

通過下面這個簡單的例子看下函數(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}}

當然, Kotlin是有類型推導(dǎo)功能,如果可以根據(jù)函數(shù)表達式推導(dǎo)出類型,也可以不寫返回類型。

但是上面的還是有點繁瑣,還能再簡單,在 Kotlin中if是表達式,也就是有返回值的,因此可以直接return,另外判斷式中只有一行一句也可以省略掉大括號:

fun max(a: Int, b: Int)  {return if (a > b) a else b}

還能在簡單點嗎?可以,if是表達式,那么就可以通過表達式函數(shù)體返回:

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

最終只需要一行代碼。

關(guān)于“kotlin頂層函數(shù)和函數(shù)表達式怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI