欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Kotlin一些迷惑的语法

Kotlin一些迷惑的语法

2025/5/26 5:10:48 来源:https://blog.csdn.net/xueyoubangbang/article/details/148086466  浏览:    关键词:Kotlin一些迷惑的语法
 protected fun sendUiState(copy: S.() -> S) {_uiStateFlow.update { copy(uiStateFlow.value) }}

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

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

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

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

  protected fun sendUiState(copy: S.() -> S) {_uiStateFlow.update { uiStateFlow.value.copy() }}

Iterable

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

✅ 基本定义:

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)也是一个迭代器

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词