注意:第一个示例有效.它显示了我想要的东西.第二个例子表明我想要在没有样板的情况下声明它但没有这样做.
我只想简单一点:
trait SelfTest[T <: SelfTest[T]] {_ : T =>
def get : T = this
}
class Test extends SelfTest[Test]
object Test extends Test
Run Code Online (Sandbox Code Playgroud)
但没有样板类定义.像这样的东西:
trait SelfTest[T <: SelfTest[T]] {_ : T =>
def get : T = this
}
object Test extends SelfTest[Test.type]
Run Code Online (Sandbox Code Playgroud)
但这种方式被scala(illegal cyclic reference involving object Test)拒绝了.是否有任何魔法像#标志来表示创建的对象?
这在 scala 2.10 控制台中有效::
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |