Scala 两次遗传一个特征
这不起作用:Scala 两次遗传一个特征,scala,inheritance,linearization,Scala,Inheritance,Linearization,这不起作用: trait Trait class Class extends Trait with Trait 编译器抱怨: <console>:8: error: trait Trait is inherited twice class Class extends Trait with Trait ^ <console>:8: error: trait Trait is inherited twice
trait Trait
class Class extends Trait with Trait
编译器抱怨:
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^
问题:
- 它为什么有效
- 第二个片段有什么不同?(关于双重继承问题)
- 第二个片段或模式是否有用
Trait
只出现一次。我认为线性化是正确的
Implementation, Trait, Abstraction, ScalaObject, AnyRef, Any
请参阅Scala编程中的详细说明
这样做主要是为了对菱形继承问题有一个一致的方法,在这种情况下很有用
由于
Trait
在线性化后不能出现两次,因此用Trait编写Trait是没有意义的,被禁止也是有意义的。您是否有一个实际例子,说明第一个不起作用是一个真正的问题?问题的目的不是找出第一个不起作用的原因,但为什么第二个会这样。有用的链接:显示线性化是如何工作的。答案非常古老,所以scala可能改变了这种行为,但对我来说,现在看来这是错误的。线性化应该是:实现、抽象、特征。。。
Implementation, Trait, Abstraction, ScalaObject, AnyRef, Any