对于这两个代码块,我预计这两个块中的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