您好我读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 –