【2023】Kotlin教程

在这里插入图片描述

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

第16章 Kotlin中函数式编程API

为了提供对函数式编程的支持,Kotlin在集合和数组中提供了一些高阶函数,它们的参数和返回类型都是函数类型。因为集合和数组它们都是数据的容器,即按照某种算法实现的数据结构,这些数据在这些函数中“流动”最后输出结果。集合和数组中的这些高阶函数构成了Kotlin函数式编程API。

16.8 案例:求阶乘

求阶乘通常会使用递归函数调用,这比较影响性能,学习了函数式编程API,可以使用reduce函数实现。

package com.dingjiaxiong

//求n的阶乘
fun factorial(n: Int) = IntArray(n) { it + 1 }
    .reduce { acc, i -> acc * i }

fun main() {

    println("1! = ${factorial(1)}") //输出:1! = 1
    println("2! = ${factorial(2)}") //输出:2! = 1
    println("5! = ${factorial(5)}") //输出:5! = 120
    println("10! = ${factorial(10)}") //输出:10! = 3628800

}

运行结果

在这里插入图片描述

声明阶乘函数factorial,采用的是表达式函数体,其中IntArray(n) { it + 1 }是创建元素是1~n的Int类型集合,如果n=5那么,创建的集合为[1,2, 3, 4, 5]。reduce { acc,i -> acc * i }表达式对集合进行累积。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐