2

私はscala mongodbが初めてです。私のコードは

while(result.hasNext)
      {    
if(result.next().containsField("profilepic"))
       bl+=result.next().get("profilepic").toString()
}

次はうまくいきますが、curr().Iはどうですか?私はこのようなものが欲しいメソッドが見つかりません

bl+=result.curr().get("profilepic").toString()

しかし、scala では curr() のような方法はありません。

4

1 に答える 1

0

免責事項: 私は Scala を初めて使用しますが、Java の経験ははるかに豊富です。

あなたのコードの問題next()は、ループの各反復中に2回呼び出すことです(したがって、2つの要素に作用しています)が、意図は明らかに1つに作用することです。このコードはおそらくあなたのために働くでしょう:

while(result.hasNext) {
    val curr = result.next
    if(curr.containsField("profilepic")) {
        bl += curr.get("profilepic").toString()
    }
}

Iteratorセマンティクスに関する次のセクションをお読みください: http://www.scala-lang.org/docu/files/collections-api/collections_43.html

理解しておくべき重要なことは、 を呼び出すたびnextIterator新しい要素が生成されるということです。

val result = Iterator("foo", "bar", "baz")
result.next == "foo" // true
result.next == "bar" // true

あなたの場合、同じ要素を数回操作したいとします。それを変数 (例: ) に格納し、各反復中に正確に 1 回curr呼び出すようにします。next

于 2013-08-29T10:14:43.277 に答える