【发布时间】:2011-07-10 08:35:59
【问题描述】:
假设我有一个迭代器:
val it = List("a","b","c").iterator
我想要它的副本;我的代码是:
val it2 = it.toList.iterator
说得对,但好像不太好。有没有其他 API 可以做到这一点?
【问题讨论】:
-
为什么?一旦你克隆了它,原来的迭代器将被消耗掉并且无用,从而首先打败了克隆的全部意义......
-
@Kevin,不一定是这样,对吧?抽象地说,似乎有可能有一个操作为我提供一个迭代器,该迭代器将返回与源迭代器相同的序列 - 当然,状态问题可能使所有迭代器都不可能。它似乎本质上不需要消耗源代码。
-
从
val切换到def会在每次引用符号时给你一个新的迭代器(在上面的例子中命名为it)。在许多情况下,这种方式可能感觉更简单。