您好我讀Debasish有趣的一篇關於隱式運行。我已經寫了這個代碼:如何隱式使用函數?
def find[C <: Business](id: String) = {
collection.findOneByID(id).map(x=> implicitly[DBObject => C].apply(x))
}
但它失敗,此消息編譯器來編譯:
could not find implicit value for parameter e: (com.mongodb.casbah.commons.Imports.DBObject) => C
什麼是我的錯?任何人都可以幫助我?
UPDATE
我的想法是這樣的: 找到的是在性狀不一無所知DBOBJECT聲明,我不想把這種依賴性。
trait BusinessRepository {
def find[C <: Business](id: String): Option[C]
}
class MongoBusinessRepository {
val collection = ..
def find[C <: Business](id: String): Option[C] = {
collection.findOneByID(id).map(x=> implicitly[DBObject => C].apply(x))
}
implicit def DBObject2Hotel(x: DBObject): Hotel = {
// ...
// returning Hotel
}
}
case class Hotel(...) extends Business(...)
我正在使用Scala 2.8.1 –