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