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

Dan*_*son 8 syntax mixins dart

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

class A{}

class B with A{} //error can't use with syntax without an extends?
Run Code Online (Sandbox Code Playgroud)

为什么我不能with没用extends?当然每个阶级都隐含着extends Object.

Ale*_*uin 15

这是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.

或者,换一种说法:类声明中有一个扩展条款和工具条,但它具有条款.相反,with子句属于extends子句.

从弗洛里安Loitsch另一点:

当您使用mixin扩展"Object"时,第一个mixin总是可以取代"Object".

所以你class B with A应该class B extends Object with A这也相当于class B extends A.