我一直在研究路径依赖类型。我能找到的最好的描述是:
如果L是类型标签,那么x.L和y.L是相同的类型iff x和y可以显示为引用同一个对象。
这有时不是人们期望的子类型行为。我希望如果上面例子中的L确实相同,那么这就足以使x.L和y.L变得一致。
Scala的设计是否有任何特殊原因?
答案 0 :(得分:9)
Scalable Component Abstractions论文对路径依赖类型有很好的解释,也是第3节中的一个很好的例子:“案例研究:主题/观察者”。
答案 1 :(得分:4)
这paper很好地解释了这一点。基本上,它们习惯于支持基于抽象数据类型的编程和模块化。
答案 2 :(得分:-7)
将L视为泛型类的类型参数。 Scala夸耀其类型成员,但底层JVM仍然具有相同的局限性。