【发布时间】:2015-03-27 18:29:58
【问题描述】:
我试图提出一个组合场景,其中 self-type 和 extends 行为不同,到目前为止还没有找到。基本示例总是谈论不需要类/特征不必是依赖类型的子类型的自我类型,但即使在这种情况下,自我类型和扩展之间的行为似乎是相同的。
trait Fooable { def X: String }
trait Bar1 { self: Fooable =>
def Y = X + "-bar"
}
trait Bar2 extends Fooable {
def Y = X + "-bar"
}
trait Foo extends Fooable {
def X = "foo"
}
val b1 = new Bar1 with Foo
val b2 = new Bar2 with Foo
在使用一个与另一个时,是否存在某种形式的组合或组合对象的功能不同的情况?
更新 1: 感谢您提供没有自我输入就不可能实现的事情的示例,我很欣赏这些信息,但我真的在寻找可以使用 self 和 extends 的组合,但不是可以互换。
更新 2: 我想我的具体问题是为什么各种 Cake Pattern 示例通常都在谈论必须使用 self-type 而不是 extends。我还没有找到一个蛋糕模式场景不能与扩展一样好用
【问题讨论】:
标签: scala extends self-type cake-pattern