《第一行代码:Android》第三版6.5高阶函数详解

本文主要是讲高级函数,首先来看看什么是高阶函数?(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