4
在哪里可以找到什么意思外=>上
trait After extends Context { outer => xxx
//...
}
的信息?
在哪里可以找到什么意思外=>上
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 = [email protected]
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
我想我已经回答了这个地方 – Edmondo1984 2012-07-26 11:22:41
http://stackoverflow.com/questions/11535657/scala-trait-syntax/11535791#11535791 – Edmondo1984 2012-07-26 11:27:51
@ Edmondo1984:IMO,两个答案都缺乏。你的文章更加简洁,但并不像这个问题的答案。需要改进之前,任何被巡回模组寻找点删除。 – 2015-07-05 02:47:40