2011-03-22 2 views

答えて

4

セルフタイプを行う必要がある形質またはクラスの契約の一部ではありません。つまり、は、特性やクラスに外部からのの可視的な制限を与えず、内部ではのものだけが表示されます。セルフタイプは、オブジェクトのインスタンス化時にチェックされますが、それ以外の場合は、宣言する特性または継承する特性/クラス/オブジェクトによってのみ使用できます。 Javaの言葉では、自己型は、その特性によって宣言されたprotected interfaceのようなものだと考えることができます(もちろんJavaは実際にそのようなことをサポートしません)。

テストを動作させたい場合は、B on Aの依存関係を外部から見えるようにする必要があります。これは、 "extends"宣言、a.k.a単純なサブクラス化で行われます。

trait A { def t : Int } 
trait B extends A 
def test(b: B) : Int = b.t 
+0

これでいいですか。まあ、自己タイプを少なくとも可視にすることができます: 'trait B {this:A => def a = this}' def test(b:B):int = b.a.t' –