本文主要是讲高级函数,首先来看看什么是高阶函数?(HighOrderFunction)
高阶函数定义
定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。
编程的数据类型有int ,布尔类型等,Kotlin中增加了一个函数类型的概念。如何声明一个函数类型?(String,Int)->Unit 这么写的意思就是:这是一个函数,接收String 和Int作为输入参数,返回值是Unit,Unit 相当于Java中的void。
高阶函数允许让函数类型的参数来决定函数的执行逻辑。
书中例子代码
例子是纯kotlin代码,可以在play中实现。实现了一个高阶函数,传入两个数,和plus 或者minus ,根据是加还是减来决定执行逻辑。
后面的result3 和result4 连函数都懒得声明了,直接就是匿名函数了,更自由了,想怎么整您就直接写得嘞。
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
println("Beginning:Hello, world!!!")
val num1=100
val num2=80
val result1=num1AndNum2(num1,num2,::plus)
val result2=num1AndNum2(num1,num2,::minus)
println("result is $result1")
println("result is $result2")
//下面是使用lamda表达式的写法来实现的
val result3=num1AndNum2(num1,num2){n1,n2->n1+n2}
val result4=num1AndNum2(num1,num2){n1,n2->n1-n2}
println("use lamda:result is $result3")
println("use lamda:result is $result4")
}
fun num1AndNum2(num1:Int,num2:Int,operation:(Int,Int)->Int):Int{
val result=operation(num1,num2)
return result
}
fun plus(num1:Int,num2:Int):Int{
return num1+num2
}
fun minus(num1:Int,num2:Int):Int{
return num1-num2
}
运行结果
Beginning:Hello, world!!!
result is 180
result is 20
use lamda:result is 180
use lamda:result is 20