Flow 基础:11. 末端操作符 (Terminal Operators)

本篇解析 example-flow-11.kt。探讨如何触发 Flow 的执行并获取最终结果。

1. 核心概念

Flow 是冷的,必须通过末端操作符来启动收集。

常用末端操作符:

  • collect:最基础的,逐个处理发射出的值。
  • toList / toSet:将流中的所有值收集到集合中。
  • first / single:只取第一个值,或确保流中只有一个值。
  • reduce / fold:对流中的值进行累加计算。

2. 代码解析 (reduce)

1
2
3
4
val sum = (1..5).asFlow()
.map { it * it } // 1, 4, 9, 16, 25
.reduce { a, b -> a + b } // 计算总和:55
println(sum)
  • reduce 会将流中的第一个元素作为初始值,然后依次与后续元素进行计算。

3. 开发者感悟

末端操作符是“收网”的过程。在 Android 中,最常用的是 collect(用于更新 UI)和 first(用于从 DataStore 或数据库中获取单次配置信息)。

,