好的,所以,我知道我可以做以下事情:
trait MyTrait[T <: MyTrait[T]] { self: T =>
val listOfT: List[T]
def getFirst: T
def getOne: T = if (listOfT.length > 0) getFirst else self
}
class MyClass extends MyTrait[MyClass] {
override val listOfT: List[MyClass] = List[MyClass](this)
override def getFirst: MyClass = listOfT.head
}
如果我希望 MyTrait 有一个伴随对象,它看起来像:
object MyTrait{
def doSomething[T <: MyTrait[T]](aninstance:T)= { ... }
}
所有这些看起来都很丑陋,我希望看到更好的方法,但是,现在我只是想弄清楚,我如何从其他任何地方引用类型?例如:
case class Foo( anInstanceOfMyTrait: MyTrait[what goes here???] )
或者有没有更简单的方法?