【发布时间】:2025-12-05 17:00:02
【问题描述】:
我有一个 java.lang.Iterable 懒惰地计算它的值。我正在从 Scala 访问它。是否有只返回不同值的核心 API 方式?例如,成像有一个过滤器方法,它也提供了迄今为止返回的所有结果:
val myLazyDistinctIterable = iterable.filter((previousReturnedItems, newItem) => previousReturnedItems.contains(newItem))
我想这不是一个非常普遍的情况,因为它涉及存储以前返回的项目,这可能是它不在核心 API 中的原因。
我知道List.distinct 和Sets,但我想要一些在被问到之前不会计算其元素的东西。
【问题讨论】:
-
我认为最简单的方法是在其闭包中返回一个带有可变
Set的迭代器,该迭代器跟踪它所看到的内容,然后由filter生成应用于其输入,更新所见集并酌情返回 false。
标签: scala collections lazy-evaluation