行內函數

函式可以使用 inline 字首進行內聯宣告,在這種情況下,它們就像 C 中的巨集一樣 - 而不是被呼叫,它們在編譯時被函式的主體程式碼替換。在某些情況下,這可以帶來效能優勢,主要是在使用 lambdas 作為函式引數的情況下。

inline fun sayMyName(name: String) = "Your name is $name" 

與 C 巨集的一個區別是行內函數無法訪問它們被呼叫的範圍:

inline fun sayMyName() = "Your name is $name"

fun main() {
    val name = "Foo"
    sayMyName() # => Unresolved reference: name
}