Kotlin 教學【從零開始學 Kotlin 程式設計】Inline 內聯函數

 

【從零開始學 Kotlin 程式設計】
線上教學課程目錄:https://bit.ly/2Kx7GrM
Youtube 課程播放清單:https://bit.ly/3qJ5a5Q

Inline內聯函數

在 Kotlin 中,使用函數當參數傳遞,記得將此函數前面加入 inline 關鍵字,可以降低資源消耗。若沒有使用 Inline 內聯此函數,會導致每個函數都被實體化 (Instance) 出來。

inline fun showGreeting(name: String, msg: String, greeting: (String, String) -> String) {
    println(greeting(name, msg))
}

fun main() {
    showGreeting("HKT", "今天過得好嗎?") { name: String, msg: String ->
        "哈囉~ $name, $msg"
    }
}

有加 inline 反編譯 showGreeting

...
...
...

public static final void main() {
  String name$iv = "HKT";
  String msg$iv = "今天過得好嗎?";
  int $i$f$showGreeting = false;
  int var5 = false;
  String var4 = "哈囉~ " + name$iv + ", " + msg$iv;
  System.out.println(var4);
}

...
...
...

可以看到原本呼叫函數要執行的內容,被複製到呼叫函數的地方。這就是加入 inline 的效果。

沒有加 inline 反編譯 showGreeting

...
...
...

public static final void main() {
      showGreeting("HKT", "今天過得好嗎?", (Function2)null.INSTANCE);
   }
...
...
...

反編譯可以看到,在沒有加入 inline 關鍵字的情況下,會出現 INSTANCE。


那這次的課程就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

Android Studio 歷代版本下載點

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器