可能重复:
"outer =>"究竟是什么意思?
在哪里可以找到有关的信息
trait After extends Context { outer => xxx
//...
}
Run Code Online (Sandbox Code Playgroud)
什么意思外面=>?
dre*_*xin 14
这是一种自我类型.您还可以添加类型注释,以强制类,将您的特征扩展为特定类型.但是没有类型它只是一个引用this(并被称为自引用),所以你可以在内部类等中使用它.例如:
class MyOuter { outer =>
// this == outer
class MyInner {
// this != outer
def creator = outer
}
}
Run Code Online (Sandbox Code Playgroud)
我提到的其他用法可以用于向现有类添加特殊行为:
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
Run Code Online (Sandbox Code Playgroud)
这里的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |