如果没有“延伸”,dart mixin'with'不能使用?

时间:2013-06-20 08:31:51

标签: syntax dart mixins

我正在使用Webstorm 6.0.2并在尝试使用mixin语法时遇到错误:

class A{}

class B with A{} //error can't use with syntax without an extends?

为什么我不能在没有with的情况下使用extends?当然每个班级都隐含extends Object

1 个答案:

答案 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