【2023】Kotlin教程 第二篇 面向对象与函数式编程 第13章 函数式编程基石——高阶函数和Lambda表达式 13.2 高阶函数 13.2.3 函数作为另一个函数返回值使用

【2023】Kotlin教程

在这里插入图片描述

第二篇 面向对象与函数式编程

第13章 函数式编程基石——高阶函数和Lambda表达式

函数式编程思想虽然与面向对象一样立即悠久,但是支持函数式编程的计算机语言不过是近几年的事情。这些语言有Swift、Python、Java 8和C++ 11等,作为新生的语言Kotlin也支持函数式编程。

13.2 高阶函数

函数式编程的关键是高阶函数的支持。一个函数可以作为另一个函数的参数,或者返回值,那么这个函数就是“高阶函数”。

13.2.3 函数作为另一个函数返回值使用

可以把函数作为另一个函数的返回值使用,那么这个函数属于高阶函数。之前我们写的calculate函数的返回类型就是(Int,Int)->Int函数类型,

在这里插入图片描述

这就说明calculate是高阶函数。

下面再介绍一个函数作为另一个函数返回值使用的示例:

// 定义计算长方形面积的函数
// 函数类型(Double, Double) → Double
fun rectangleArea(width: Double, height: Double): Double {
    
    
    return width * height;
}

// 定义计算三角形面积的函数
// 函数类型(Double, Double) → Double
fun triangleArea(bottom: Double, height: Double) = 0.5 * bottom * height

fun getArea(type: String): (Double, Double) -> Double {
    
    

    var returnFunction: (Double, Double) -> Double

    when (type) {
    
    
        "rect" -> returnFunction = ::rectangleArea
        else -> returnFunction = ::triangleArea
    }

    return returnFunction
}

fun main() {
    
    

    // 获取计算三角形面积函数
    var area: (Double, Double) -> Double = getArea("tria")
    println("底10 高15的三角形面积为: ${
      
      area(10.0, 15.0)}")

    // 获取计算长方形面积函数
    area = getArea("rect")
    println("宽10 高15的长方形面积: ${
      
      area(10.0, 15.0)}")
}

在这里插入图片描述

上述代码fun getArea定义函数getArea,其返回类型是(Double,Double)->Double,这说明返回值是一个函数类型。

扫描二维码关注公众号,回复: 14729785 查看本文章

var returnFunction: (Double, Double) -> Double代码声明returnFunction变量,显式指定它的类型是
(Double,Double)->Double函数类型。

猜你喜欢

转载自blog.csdn.net/weixin_44226181/article/details/130024451
今日推荐