[英]Scala MongoDB Chaining Methods
我想尋求有關美化客戶端代碼的幫助。
假設我有一些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
我想以不同的方式將它們鏈接在一起(假設我要執行一些有限的搜索,一些排序的搜索,就像基本上是一個裝飾器一樣)。 你會怎么做?
謝謝你的幫助。
您可以嘗試使用隱式值類來豐富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
。 由於它是隱式值類 ,因此在運行時不會創建對象的其他實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.