0

Casbah 2.5.0 を使用しています。チュートリアルに例があります:

scala> val builder = MongoDBList.newBuilder
scala> builder += "foo"
scala> builder += "bar"
scala> builder += "x"
scala> builder += "y"
builder.type = com.mongodb.casbah.commons.MongoDBListBuilder@...

scala> val newLst = builder.result
newLst: com.mongodb.BasicDBList = [ "foo" , "bar" , "x" , "y"]

したがって、ここの newLst は BasicDBList です。

でも自分でやってみると、やっぱり違う。

scala> val builder = MongoDBList.newBuilder
scala> builder += "foo"
scala> builder += "bar"
scala> val newLst = builder.result
newLst: com.mongodb.casbah.commons.MongoDBList = [ "foo" , "bar"]

ここでの newLst は MongoDBList 型です。

どうしてですか?MongoDBList を BasicDBList に変換するにはどうすればよいですか?

4

1 に答える 1

1

casbahには からcom.mongodb.casbah.commons.MongoDBListへの暗黙的な変換があります(チェック):com.mongodb.BasicDBListcom.mongodb.casbah.commons.Implicits

implicit def unwrapDBList(in: MongoDBList): BasicDBList = in.underlying

BasicDBList が期待される位置に MongoDBList を渡すだけです。

scala>  val l: BasicDBList = newLst
l: com.mongodb.casbah.Imports.BasicDBList = [ "foo" , "bar"]

MongoDBListから作成する場合List:

scala>  val list = List("foo", "bar")
list: List[java.lang.String] = List(foo, bar)

scala>  val dbList = MongoDBList(list:_*)
dbList: com.mongodb.casbah.commons.MongoDBList = [ "foo" , "bar"]
于 2013-03-03T16:47:27.430 に答える