可以使用inline前缀以内联方式声明函数,在这种情况下,它们的作用类似于C中的宏-而不是被调用,而是在编译时将其替换为函数的主体代码。在某些情况下(主要是将lambda用作函数参数),这可能会带来性能优势。
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 }