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 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰