我似乎只能迭代结果 val 一次。调用 length 会对其进行迭代,因此调用result.next
会导致异常。
val result = for ( regex(name) <- regex findAllIn output) yield name
println(result.length)
println(result.next)
结果是 AFAIK 一个 Iterator[String],所以我不确定为什么我只能迭代一次。
我似乎只能迭代结果 val 一次。调用 length 会对其进行迭代,因此调用result.next
会导致异常。
val result = for ( regex(name) <- regex findAllIn output) yield name
println(result.length)
println(result.next)
结果是 AFAIK 一个 Iterator[String],所以我不确定为什么我只能迭代一次。
您可以尝试在其上调用类似toVector
的东西,以便将其存储在一个持久集合中,然后您可以根据需要多次迭代它。
Iterator
只会让您遍历内容一次,因此如果您想多次遍历它,请将其变成一个集合。鉴于你有一个Iterator[String]
,调用类似的东西.toVector
会给你一个Vector[String]
.
结果是 AFAIK 一个 Iterator[String],所以我不确定为什么我只能迭代一次。
因为这就是Iterator
s 的工作方式。您无法返回或重置它们 - 一旦您遍历它们,它们就会“用完”。
一种解决方法是将结果转换为例如 a List
,它没有这样的限制:
val result = (for ( regex(name) <- regex findAllIn output) yield name).toList
println(result.length)
println(result.head)