Kotlin一些迷惑的语法

Kotlin 复制代码
 protected fun sendUiState(copy: S.() -> S) {
        _uiStateFlow.update { copy(uiStateFlow.value) }
    }

疑惑点:为什么传入的方法是无参数的,但是为什么调用的时候传入值?

这个 copy 函数的签名虽然看起来没有参数 ,但它的本质是一个 带接收者的函数 ,它会在一个 S 类型的对象上调用。所以:

copy(uiStateFlow.value)

不是把 uiStateFlow.value 当作参数传入 ,而是把它作为接收者对象调用这个 lambda

和如何写法是一样的,因为编译成java的时候,参数中是带有当前的对象的

Kotlin 复制代码
  protected fun sendUiState(copy: S.() -> S) {
        _uiStateFlow.update { uiStateFlow.value.copy() }
    }

Iterable

在 Kotlin 中,Iterable 是一个接口,表示可以被迭代的一组元素 。它是 Kotlin 集合体系的基础接口之一,类似于 Java 中的 Iterable<T>

✅ 基本定义:

Kotlin 复制代码
public interface Iterable<out T> {
    operator fun iterator(): Iterator<T>
}
  • T 是集合中元素的类型。

  • Iterable 的本质是:只要你能 for 遍历它,它就是 Iterable。

✅ 典型实现:

以下都是 Iterable 的子类型:

  • List

  • Set

  • Map.keys / Map.values

  • 自定义只要实现了 iterator() 方法的类

✅ 常用操作(来自扩展函数)

Kotlin 给 Iterable<T> 添加了大量实用的扩展函数,比如:

操作函数 功能
forEach {} 遍历每个元素
map {} 转换为另一个集合
filter {} 条件筛选
first {} / find {} 查找匹配项
any {} / all {} 判断是否满足条件
groupBy {} 分组
sortedBy {} 排序
toList() / toSet() 转换为 List 或 Set
复制代码
val list = (0 until  3).map {  "转成string" + it }

map的一些用法,(0 until 3)也是一个迭代器

相关推荐
alexhilton6 小时前
Compose中的ContentScale:终极可视化指南
android·kotlin·android jetpack
jzlhll1237 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
符哥200812 小时前
充电桩 WiFi 局域网配网(Android/Kotlin)流程、指令及实例说明文档
android·开发语言·kotlin
大傻^15 小时前
SpringAI2.0 Null Safety 实战:JSpecify 注解体系与 Kotlin 互操作
android·开发语言·人工智能·kotlin·springai
jzlhll12320 小时前
Kotlin Mutex vs Java ReentrantLock vs synchronized
java·开发语言·kotlin
Kapaseker20 小时前
一杯 Kotlin 美式品味 object 声明
android·kotlin
俩个逗号。。21 小时前
Kotlin 扩展函数详解
开发语言·kotlin
su1ka1112 天前
Kotlin(3)基本语法
kotlin
su1ka1112 天前
Kotlin(4)面向对象
kotlin
鹧鸪晏2 天前
搞懂 kotlin 泛型 out 和 in 关键字
android·kotlin