0

結果の val を 1 回しか反復できないようです。呼び出しの長さはそれを反復するため、呼び出すresult.nextと例外が発生します。

    val result = for ( regex(name) <- regex findAllIn output) yield name
    println(result.length)
    println(result.next)

結果は AFAIK の Iterator[String] であるため、1 回しか反復できない理由がわかりません。

4

2 に答える 2

2

のようなものを呼び出してtoVector、永続的なコレクションに保存してから、何度でも繰り返すことができます。

Iteratorコンテンツを 1 回だけトラバースできるため、複数回トラバースする場合はコレクションに変換します。があるとすると、 onIterator[String]のようなものを呼び出すと、が返されます。.toVectorVector[String]

于 2013-02-08T21:00:47.873 に答える
2

結果は AFAIK の Iterator[String] であるため、1 回しか反復できない理由がわかりません。

これが仕組みだからIteratorです。それらを戻ったりリセットしたりすることはできません。一度反復すると、それらは「使い果たされます」。

回避策は、結果をたとえば a に変換することですList。これにはそのような制限はありません。

val result = (for ( regex(name) <- regex findAllIn output) yield name).toList
println(result.length)
println(result.head)
于 2013-02-08T21:01:20.643 に答える