【2023】Kotlin教程 第二篇 面向对象与函数式编程 第16章 Kotlin中函数式编程API 16.3 三大基础函数 16.3.3 reduce函数

柔情只为你懂 2024-03-24 17:15 19阅读 0赞

【2023】Kotlin教程

文章目录

    • 【2023】Kotlin教程
      • 第二篇 面向对象与函数式编程
      • 第16章 Kotlin中函数式编程API
        • 16.3 三大基础函数
          • 16.3.3 reduce函数

在这里插入图片描述

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

第16章 Kotlin中函数式编程API

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

16.3 三大基础函数

过滤、映射和聚合是数据的三大基本操作,围绕这三大基本操作会有很多函数,但其中有三个函数是作为基础的函数:filter、map和reduce。

16.3.3 reduce函数

聚合操作会将Collection集合或数组中数据聚合起来输出单个数据,聚合操作中最基础的是归纳函数reduce,reduce函数会将集合或数组的元素按照指定的算法积累叠加起来,最后输出一个数据。

举个栗子:

先来一个Song 数据类:

  1. package com.dingjiaxiong
  2. data class Song(val title: String, val durationInSeconds: Int)

调用测试

  1. package com.dingjiaxiong
  2. fun main() {
  3. //测试使用
  4. val songs = listOf(
  5. Song("Speak to Me", 90),
  6. Song("Breathe", 163),
  7. Song("On he Run", 216),
  8. Song("Time", 421),
  9. Song("The Great Gig in the Sky", 276),
  10. Song("Money", 382),
  11. Song("Us and Them", 462),
  12. Song("Any Color You Like", 205),
  13. Song("Brain Damage", 228),
  14. Song("Eclipse", 123)
  15. )
  16. // 计算所有歌曲播放时长之和
  17. val durations = songs.map {
  18. it.durationInSeconds }
  19. .reduce {
  20. acc, i -> acc + i }
  21. println(durations)
  22. }

在这里插入图片描述

代码调用reduce函数计算时长,其中acc参数是上次累积计算结果,i当前元素,acc + i表达式是进行累加,这个表达式是关键,根据自己需要这个表达式是不同的。

发表评论

表情:
评论列表 (有 0 条评论,19人围观)

还没有评论,来说两句吧...

相关阅读