如何以简单的方式在Kotlin中实现懒惰列表?(例如,整数懒惰列表).我一直在寻找官方文档,我一直在谷歌搜索没有一致的结果.也许我发现的最好的教程是这一个:在这里输入链接描述,但我想知道是否有更多的"kotlin本地方式"来做这件事,或者我必须自己用我刚给出的链接实现它.
我在Kotlin的官方博客上找到了以下内容,但我无法获得一个项目,例如整数[3]
var i = 0
integers = iterate{i++}
integers[3] // does not work
integers drop 3 // works
Run Code Online (Sandbox Code Playgroud)
And*_*lav 19
正如您所正确观察到的那样sequenceOf
(streamOf()
在旧版本中)是获取懒惰数字流的方法.与Haskell不同,在Kotlin的标准库中没有懒惰列表,并且有一个很好的理由:Haskell世界和Java世界中"list"的主要含义是不同的.在Haskell中,列表主要是一个链表,一对头和尾,主要操作是这样一个列表的头部,这很容易有效地实现懒惰.在Kotlin/Java中,list是一个随机访问其元素的数据结构,主要操作get(int)
当然可以懒惰地实现,但其性能通常会让用户感到惊讶.
因此,Kotlin使用流来进行懒惰,因为在涉及惰性集合的主要用例时它们很好:迭代,过滤,映射和随机访问不太可能经常遇到.
正如您再次正确观察的那样,drop
您可以通过索引访问元素,这会使代码中的性能影响更加明显.
顺便说一句,懒惰列表的用例是什么?
归档时间: |
|
查看次数: |
4482 次 |
最近记录: |