Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 基础介绍
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 流程控制
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 特殊的类
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 函数
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 集合
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 作用域
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- 代理
Kotlin 语法基础大全,从例子着手的 从0到1的学习 --c
Kotlin 语法基础大全,从例子着手的 从0到1的学习 -- kotlin与js
翻译来源
高阶函数
高阶函数 是以另一个函数为参数或者返回值的函数。
以另一个函数为参数
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1
return operation(x, y) // 2
}
fun sum(x: Int, y: Int) = x + y // 3
fun main() {
val sumResult = calculate(4, 5, ::sum) // 4
val mulResult = calculate(4, 5) { a, b -> a * b } // 5
println("sumResult $sumResult, mulResult $mulResult")
}
- 1 定义一个高阶函数,他有两个int参数 x,y,同时他还有一个函数作为参数:operation。在operation的申明中,他的参数和返回值已经申明。
- 2 这个高阶函数的内部实现是获得operation的返回值在传入x,y的情况下。
- 3 定义一个函数,与operation的定义很像。
- 4 执行这个高阶函数,传入两个int值的参数,和传入一个函数参数
::sum
。::
在kotlin中是一个使用名字来提取方法的符号。 - 5 执行这个高阶函数,插入两个int值的参数,和传入一个lambda为参数。这种写法是不是看起来很简洁?
以一个函数作为返回值
fun operation(): (Int) -> Int { // 1
return ::square
}
fun square(x: Int) = x * x // 2
fun main() {
val func = operation() // 3
println(func(2)) // 4
}
- 1 定义一个高阶函数,他返回一个函数作为返回值。在这里
(Int) -> Int
的写法是申明的返回值的函数的结构。这里定义了返回square
函数 - 2 定义名字叫
square
的函数,他的作用是返回x*x
- 3 执行这个高阶函数,获取一个函数作为返回值。在这里,
operation()
返回的func
就是square
方法 - 4 执行
func
。这里square
方法会被执行、
lambda 表达式
Lambda表达式是一种为了方便创建函数对等式(就是 相当于一种函数)。