注意:第一个示例有效。它显示了我想要的东西。第二个例子显示我想要在没有样板的情况下声明它但未能这样做。
我只是想做一件简单的事情:
trait SelfTest[T <: SelfTest[T]] {_ : T =>
def get : T = this
}
class Test extends SelfTest[Test]
object Test extends Test
但没有样板类定义。像这样:
trait SelfTest[T <: SelfTest[T]] {_ : T =>
def get : T = this
}
object Test extends SelfTest[Test.type]
但这种方式被scala(illegal cyclic reference involving object Test
)拒绝。是否有像#
符号的魔法来表示创建的对象?
答案 0 :(得分:0)
这适用于scala 2.10 console ::
scala> trait SelfTest[T<:SelfTest[_]] {_: T => def get:T = this }
defined trait SelfTest
scala> class Test extends SelfTest[Test]
defined class Test
scala> case object t extends Test
defined module t
scala> t.get
res1: Test = t