【发布时间】:2013-07-28 17:31:48
【问题描述】:
注意:第一个示例有效。它显示了我想要得到的东西。第二个例子表明我想在没有样板的情况下声明它,但没有这样做。
我只想简单点:
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) 拒绝。有没有像# 这样的魔法来表示创建的对象?
【问题讨论】:
-
您使用的是哪个版本的 Scala 编译器?您的代码的第一个版本在 Scala 2.10.2 下运行良好
-
2.9.2、2.10.0。我想用第二个。它更短并且不会创建冗余实体。问题是关于如何在不定义类的情况下实现第一个示例的效果,就像它应该在第二个中那样