【发布时间】:2020-07-07 03:37:30
【问题描述】:
我今天注意到关于惰性序列的这种行为:
// filtered will be [2, 4, 6, 8]
let filtered = [1,2,3,4,5,6,7,8].lazy.filter { $0 % 2 == 0 }
print(filtered[2]) // expecting 6, but prints 3
我明白为什么它给了我 3。下标可能只知道惰性包装器底层的序列,因此它从原始未过滤序列返回元素。但是,否则我将如何访问第三个元素?
上下文:
我正在从 Realm 查询结果构建一个表视图,我应用了一个额外的过滤器,因为 Realm 不支持我尝试执行的过滤器。因此我现在有一个LazyFilterSequence<Results<MyRealmObject>>。在cellForRowAt 中,我需要按索引访问惰性序列,以便知道在每个表格单元格中显示什么。
【问题讨论】:
-
@MartinR 所以这里的问题和答案都是纯粹的重复。为什么不标记为重复?
-
@matt:因为我太懒了(!)无法详细阅读其他问答并检查它是否符合完全重复的条件。
标签: swift lazy-sequences