【发布时间】:2011-11-28 23:56:22
【问题描述】:
我对特征 Iterator 中方法 take 的行为感到困惑。它似乎不消耗物品。这是一个例子:
scala> Iterator(1,2,3)
res0: Iterator[Int] = non-empty iterator
scala> res0 take 2 toArray
res1: Array[Int] = Array(1, 2)
scala> res0.next
res2: Int = 1
显然第 2 步消耗了两个项目,但在第 3 步中,Iterator 仍然是第一个项目。查看实现,我看不到任何类型的复制或缓冲,只有一个新的 Iterator 委托给底层的。怎么可能?我怎样才能真正消费 n 个项目?
【问题讨论】:
标签: scala iterator scala-collections