行內函數
函式可以使用 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
}