我似乎只能迭代结果val一次。调用长度迭代它,因此调用result.next
会导致异常。
val result = for ( regex(name) <- regex findAllIn output) yield name
println(result.length)
println(result.next)
结果是AFAIK是Iterator [String],所以我不知道为什么我只能迭代一次。
答案 0 :(得分:2)
您可以尝试在其上调用类似toVector
的内容,以便将其存储在持久集合中,然后您可以根据需要多次迭代它。
Iterator
只允许您遍历内容一次,因此如果您想要遍历一次以上,那么将其转换为集合。如果您有Iterator[String]
,则在其上调用类似.toVector
的内容会为您提供Vector[String]
。
答案 1 :(得分:2)
结果是AFAIK是Iterator [String],所以我不知道为什么我只能迭代一次。
因为这是Iterator
的工作方式。你不能走回去或重置它们 - 一旦你遍历它们,它们就会“用完”。
解决方法是将结果转换为例如List
,没有这样的限制:
val result = (for ( regex(name) <- regex findAllIn output) yield name).toList
println(result.length)
println(result.head)