[Android][Kotlin]「概念篇」你需要知道的 inline / noinline / crossinline 使用詳解

Eleg.Aces.KC
6 min readNov 30, 2020

inline /noinline / crossinline 這幾個關鍵字常常可以在kotlin上看到,為了可以看懂大家在寫什麼,你可以參考我這邊文章,在這邊推薦給大家,inline主要能用來處理kotlin 函式內帶有function type 變數的效能優化,或者有些人會稱function type的變數為lambda function。

inline

inline 實際上的作用,就是會在編譯的時候把你有使用inline的function內容直接複製到執行處,而不是直接實例化一個物件,藉由inline來減少實例化物件來提升效能

先簡單的說,我們寫一個funcion會寫成像下方這樣:

然而,如果帶入一般變數的function直接加上inline,某些IDE可能會提醒你這樣直接使用,並不會增加效能表現。

像是下面這邊示範,只有帶入一般變數並使用inline,則編譯器跳黃底提醒,說明了預期要帶入function type 變數才能有效提升效能表現。

所以,我們試著寫出一個帶入function type的function,並寫一個一樣的function帶有inline,就像這樣:

這時,編譯器就不會跳出提示,這樣就可以使用inline了,那到底,只差一個inline關鍵字,他們倆到底有什麼差別呢?

我們試著把上面兩個function 分別呼叫,如下:

--

--

Eleg.Aces.KC

Welcome ! Here is Elegant Access ,in here ,I will show you some android develop skill or some tutorial ,please follow me that you can get latest story.