【发布时间】:2014-04-11 09:50:10
【问题描述】:
我尝试将 Scala 类型类和抽象类型别名组合在一起,但这给我带来了一些问题。
查看代码:
我有一个ModelService:
trait ModelService[T] {
type ID
def save(t: T): ID
def find(id: ID): T
}
object ModelService {
implicit object UserService extends ModelService[User] {
type ID = Long
def save(t: User): ID = ???
def find(id: ID): User = ???
}
}
我使用类型类来实现:
object ModelHelpers {
def save[T](model: T)(implicit service: ModelService[T]): service.ID =
service.save(model)
def find[T: ModelService](id:) = // here, how can I declare the id's type?
implicitly[ModelService[T]].find(id)
}
问题是:在ModelHelpers.save中,我可以使用service.ID声明返回类型
但是在ModelHelpers.find中,如何声明参数id的类型呢?
谢谢。
【问题讨论】:
标签: scala typeclass type-alias