1

假设我有两个特征(A 和 B)和一个将它们混合并实现它们的方法的类 C:

trait A {
    def foo
}

trait B {
    def bar
}    

class C extends A with B {
    def foo = "Foo"
    def bar = "Bar"
}

Scala中有没有办法指定扩展特征B的类必须扩展特征A,然后使用特征A在特征B中定义的方法的实现方法?

这样 B 可以调用this.foo()和访问 C 的实现返回的值吗?

4

1 回答 1

6

只需指定您想this成为的人:

trait B { this: A =>
  def bar = this.foo
}

这就是所谓的self 类型this这里是一个别名而不是关键字(所以 self:A,that:A 等等都是完全合法的)。

于 2013-07-22T15:18:09.250 回答