重複の可能性:
「outer =>」は実際にはどういう意味ですか?
情報を見つけることができる場所
trait After extends Context { outer => xxx
//...
}
アウターとはどういう意味ですか=>?
重複の可能性:
「outer =>」は実際にはどういう意味ですか?
情報を見つけることができる場所
trait After extends Context { outer => xxx
//...
}
アウターとはどういう意味ですか=>?
こちらはセルフタイプ。型注釈を追加して、クラスを強制し、特性を特定の型に拡張することもできます。しかし、型がなければ、それは単なる参照でthis
あり (自己参照と呼ばれます)、内部クラスなどで使用できます。例:
class MyOuter { outer =>
// this == outer
class MyInner {
// this != outer
def creator = outer
}
}
私が言及した他の使用法は、たとえば、既存のクラスに特別な動作を追加するために使用できます。
class MyClass {
val foo = "foo"
}
trait MyClassExtension { this: MyClass =>
def fooExtended(s: String) = foo + s
}
scala> val x = new MyClass with MyClassExtension
x: MyClass with MyClassExtension = $anon$1@5243618
scala> x.fooExtended("bar")
res3: java.lang.String = foobar
ここでのthis: MyClass =>
手段は、MyClassExtension
のインスタンスまたはサブクラスにのみ混合できますMyClass
。
scala> class OtherClass
defined class OtherClass
scala> val x = new OtherClass with MyClassExtension
<console>:11: error: illegal inheritance;
self-type OtherClass with MyClassExtension does not conform to MyClassExtension's selftype MyClassExtension with MyClass
val x = new OtherClass with MyClassExtension