對於這兩個代碼塊,我預計這兩個塊中的self
引用都是Foo [A]。不過看起來第二個塊不能編譯。有人可以向我解釋如何解決self
參考?如何在這種情況下解決自引用?
trait Foo[A] {
def format(value:A):String
def bar[B](f:B=>A):Foo[B] = {
val self = this
new Foo[B] {
override def format(value: B): String = self.format(f(value))
}
}
}
trait Foo[A] {
def format(value:A):String
val self = this
def bar[B](f:B=>A):Foo[B] = {
new Foo[B] {
override def format(value: B): String = self.format(f(value))
}
}
}
好的。我正在撓頭。 'private [this] val self:Foo [A] = this',它編譯得很好。 – pedrofurla
非常感謝您花時間詳細解釋這一點。我知道了。對於其他沒有得到它的人,我認爲在抽象之前先用一些具體的時間替代A和B會有幫助。 – laiboonh