使用此关键字继承?

时间:2011-12-03 22:13:09

标签: scala this

  

可能重复:
  What is the difference between scala self-types and trait subclasses?

来自example in scalatest site。有一件事我不太懂

trait FunSuiteStackBehaviors { 
                   this: FunSuite => //This line
                         def a() {}
                         def b() {}
}

class StackFunSuite extends FunSuite with FunSuiteStackBehaviors {}

据我了解,似乎他们试图将一些defs分配到一个特征中。但是this: FunSuite =>部分做了什么?我尝试使用extends FunSuite而不是像

trait FunSuiteStackBehaviors extends FunSuite { 
                         def a() {}
                         def b() {}
}

class StackFunSuite extends FunSuite with FunSuiteStackBehaviors {}

我仍然得到相同的结果。它们是一样的吗?

2 个答案:

答案 0 :(得分:1)

这个:=> XXXX被称为自我类型注释http://www.scala-lang.org/node/124 基本上,你要指定"这个"的类型。 (当前对象)指定的类型。从内部开始的#34;"

答案 1 :(得分:0)

this: FunSuite =>称为自我类型注释。 "this"没有什么特别之处。两个片段都是等价的。 Here is对其理由进行了一些讨论。简而言之,自我类型注释有助于表示compositional性质,而不是IS-A关系。