我正在写一个包含函数的特征:
trait MyTrait[X,Y] {
def f(x : X) : Y
}
我试图添加地图功能:
trait MyTrait[X,Y] {
def f(x : X) : Y // the outer f
def map[Z](g : Y => Z) : MyTrait[X,Y] = MyTrait[X,Z] {
//namespace conflict : I need to access the outer f within this f
override def f(x : X) : Z = outerF andThen g
}
}
我的问题是:我如何引用外部f
?我已尝试super.f
和this.f
无济于事。我确定这是以前提出过的一个基本问题,但它并不是非常可靠的#34;容易搜索。
提前感谢您的考虑和回应。
答案 0 :(得分:2)
您可以使用self
类型
trait MyTrait[X,Y] {
self =>
def f(x : X) : Y // the outer f
def map[Z](g : Y => Z) : MyTrait[X,Y] = MyTrait[X,Z] {
override def f(x : X) : Z = self.f andThen g
}
}
答案 1 :(得分:1)
您也可以使用override def f(x : X) : Z = MyTrait.this.f andThen g
。