1

クライアント コードの美化についてご協力をお願いしたいと思います。

MongoDB を取得するための基本的な方法がいくつかあるとします。

 def find(dbo:DBObject):MongoCursor =
    mongoColl.find(dbo)

  def Sort(cursor: MongoCursor, sortFun: DBObject): MongoCursor =
    cursor.sort(sortFun)

  def Limit(cursor: MongoCursor, number: Int): MongoCursor = cursor.limit(number)

  def Offset(cursor: MongoCursor, number: Int): MongoCursor = cursor.skip(number)

  def toList(cursor: MongoCursor): List[A] =
   cursor map (readConverter(_)) toList

そして、それらをさまざまな方法で連鎖させたいです(基本的にデコレーターのように、いくつかの限定された検索、いくつかのソートされた検索を実行したいとしましょう)。どのようにしますか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

暗黙の値クラスを使用して、次の内容を充実させることができますMongoCursor

object ImplicitClassContainer {
  implicit class RichMongoCursor(val mc: MongoCursor) extends AnyVal {
    def sort(sortFun: DBObject): MongoCursor = mc.sort(sortFun)

    def limit(number: Int): MongoCursor = mc.limit(number)

    def offset(number: Int): MongoCursor = mc.skip(number)
  }

}

このように使われる

  import ImplicitClassContainer._

  def x(mc: MongoCursor): MongoCursor = {
    mc.offset(25).limit(25)
  }

基本的には、 に機能を追加するために使用されるのと同じパターンArrayです。「フロー スタイル」で追加の機能を取得しますが、それでもMongoCursor. これは暗黙の値クラスであるため、実行時にオブジェクトの追加インスタンスは作成されません。

于 2013-07-13T17:58:15.633 に答える