内联函数

函数可以使用 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
}