溫馨提示×

溫馨提示×

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

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

kotlin頂層函數和函數表達式怎么用

發布時間:2021-12-29 16:15:10 來源:億速云 閱讀:174 作者:小新 欄目:互聯網科技

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

頂層函數

不同于Java中函數只能定義在每個類里面,Kotlin采用了JavaScript 中的做法,可以在文件任意位置處定義函數,這種函數稱為頂層函數

編譯后頂層函數會成為文件類下的靜態函數,比如在文件名是join.kt下定義的joinToString函數可以通過JoinKt.joinToSting調用,其中JoinKt是編譯后的類名。

// 編譯成靜態函數// 文件名 join.ktpackage stringsfun joinToString() : String {...}/* Java */import strings.JoinKt;JoinKt.joinToSting(....)

看下上面函數編譯后的效果:// 編譯成class文件后反編譯結果

// 編譯成class文件后反編譯結果@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;
   }// 默認函數值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中很重要的一個特性,擴展函數。

擴展函數

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

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

  • 擴展函數也是編譯成靜態函數

表達式函數體

通過下面這個簡單的例子看下函數聲明相關的概念,函數聲明的關鍵字是fun,嗯,比JS的function還簡單。

Kotlin中參數類型是放在變量:后面,函數返回類型也是。

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

當然, Kotlin是有類型推導功能,如果可以根據函數表達式推導出類型,也可以不寫返回類型。

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

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

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

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

最終只需要一行代碼。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女