gpt4 book ai didi

kotlin - kotlin 中的懒惰列表?

转载 作者:IT老高 更新时间:2023-10-28 13:30:43 26 4
gpt4 key购买 nike

如何在 Kotlin 中以简单的方式实现惰性列表? (例如,整数惰性列表)。我一直在寻找官方文件,我一直在谷歌上搜索,但没有一致的结果。也许我发现的最好的教程是 here ,但我想知道是否有更符合 Kotlin 习惯的方式来做到这一点。

我在 Kotlin 的官方博客上找到了以下内容,但我无法获取项目,例如整数 [3]

var i = 0
integers = iterate{i++}

integers[3] // does not work
integers drop 3 // works

最佳答案

正如您正确观察到的,sequenceOf(在旧版本中为 streamOf())是获取惰性数字流的方法。与 Haskell 不同,在 Kotlin 的标准库中没有惰性列表之类的东西,这是有充分理由的:“列表”在 Haskell 世界和 Java 世界中的主要含义是不同的。在 Haskell 中,链表主要是一个链表,一对头尾,主要的操作就是取一个这样的链表的头,这很直接,可以高效地实现懒惰。在 Kotlin/Java 中,list 是一种随机访问其元素的数据结构,主要操作是 get(int),当然可以懒惰地实现,但它的性能往往会令人惊讶为用户。

因此,Kotlin 使用流来实现惰性,因为当涉及到惰性集合的主要用例时它们很好:迭代、过滤、映射和随机访问不太可能经常遇到。

正如您再次正确观察到的那样,drop 允许您按索引访问元素,这使得代码中的性能影响更加明确。

顺便说一句,惰性列表的用例是什么?

关于kotlin - kotlin 中的懒惰列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26572577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com