1

2 つのトレイト (A と B) と、それらを混ぜ合わせてメソッドを実装するクラス C があるとします。

trait A {
    def foo
}

trait B {
    def bar
}    

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

特性 B を拡張するクラスが特性 A を拡張し、特性 B で特性 A の定義されたメソッドの実装されたメソッドを使用する必要があることを指定する方法は Scala にありますか?

B が C の実装によって返された値を呼び出しthis.foo()てアクセスできるようにするには?

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 に答える