详解 Kotlin 高阶函数 与 Lambda 表达式
本文主要介绍了 Kotlin 高阶函数、高阶函数的应用、Lambda 表达式、内联函数、匿名函数和闭包等相关知识点。
高阶函数是一种特殊的函数,它接受函数作为参数,或者返回一个函数。这种函数的一个很好的例子就是 lock() 函数,它的参数是一个锁对象(lock object),以及另一个函数,它首先获取锁,运行对象函数,然后再释放锁。高阶函数类似 C 语言的函数指针。
高阶函数可以接受函数参数,也可以返回一个函数引用。函数可以赋值给变量,和 C 语言的函数指针一样。例如:
fun bar(): (String) -> String = { str -> str.reversed() }
val reversi = bar()
reversi("hello")
reversi("world")
内联函数(Inline Function)Kotlin 支持内联函数,函数内联也许会导致编译产生的代码尺寸变大,但如果我们使用合理(不要内联太大的函数),可以换来性能的提高。
Lambda 表达式的完整语法形式,如:
val sum = { x: Int, y: Int -> x + y }
Lambda 表达式包含在大括号之内,在完整语法形式中,参数声明在圆括号之内,参数类型的声明可选,函数体在 -> 符号之后。如果 Lambda 表达式自动推断的返回值类型不是 Unit ,那么 Lambda 表达式函数体中,最后一条(或者就是唯一一条)表达式的值,会被当作整个 Lambda 表达式的返回值。
匿名函数(Anonymous Function)匿名函数看起来与通常的函数声明很类似,区别在于省略了函数名。例如:
ints.filter(fun(item) = item > 0)
闭包(Closure)所谓闭包,就是一个代码块可以访问外层作用域的变量和参数,例如上面提到的 Lambda 表达式和匿名函数。
本文中,我们讨论了 Kotlin 高阶函数、高阶函数的应用、Lambda 表达式、内联函数、匿名函数和闭包等相关知识点,为读者提供了详细的 Kotlin 编程语言知识。