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