如何将函数中的对象作为Scala中的参数传递?
给定两个扩展类的对象:如何将函数中的对象作为Scala中的参数传递?,scala,types,mongodb,Scala,Types,Mongodb,给定两个扩展类的对象: object PageDAO extends SalatDAO[Page, Long](collection=Config.getMongoDB("db_development")("pages")) object BookDAO extends SalatDAO[Book, Long](collection=Config.getMongoDB("db_development")("books")) 我想写一个以对象为参数的函数: def find[ID](s
object PageDAO
extends SalatDAO[Page, Long](collection=Config.getMongoDB("db_development")("pages"))
object BookDAO
extends SalatDAO[Book, Long](collection=Config.getMongoDB("db_development")("books"))
我想写一个以对象为参数的函数:
def find[ID](salatDAO:SalatDAO[Product,ID]) = salatDAO.find(MongoDBObject()).limit(10)
trait SalatDAO[+A, B] // ...
^ <-- that plus does the trick
像
scala>find[Long](PageDAO)
:27:错误:类型不匹配;
找到:PageDAO.type(具有基础类型对象PageDAO)
必需:com.novus.salat.dao.SalatDAO[产品,长]
注意:页面只需遵循编译器的建议即可。如果你想SalatDAO[A,]
成为SalatDAO[B,]
的一个子类,当A你试过编译器的技巧吗?我不明白编译器技巧的真正含义。将+ObjectType附加到何处?作为SalatDAO定义的一部分?如果我不能改变SalatDAO的特征怎么办?这是一个图书馆,不是我代码库的一部分。
trait SalatDAO[+A, B] // ...
^ <-- that plus does the trick
def find[P <: Product, I](salatDAO: SalatDAO[P,I]) = // ...