我正在使用Webstorm 6.0.2并在尝试使用mixin语法时遇到错误:
class A{}
class B with A{} //error can't use with syntax without an extends?
为什么我不能在没有with
的情况下使用extends
?当然每个班级都隐含extends Object
。
答案 0 :(得分:15)
这是a really clear explanation from Ladislav Thon:
[...]有一个简单的建议,实际上在语义上是正确的:在声明中类C扩展SC与M1,M2,M3实现I1,I2 {...} ,想象一下围绕extends子句内容的括号。它们看起来像这样: C类扩展(带有M1,M2,M3的SC)实现I1,I2 {...} 。这意味着C类不扩展SC,它扩展SC_with_M1_with_M2_with_M3。
或者,换句话说:类声明有一个 extends 子句和一个 implements 子句,但不有一个< em> with 子句。相反, with 子句属于 extends 子句。
another point from Florian Loitsch:
使用mixin扩展“Object”时,第一个mixin总是取代“Object”。
因此,class B with A
应该class B extends Object with A
也应该等同于class B extends A
。