8

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

class A{}

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

为什么没有我不能with使用extends?肯定每堂课都含蓄extends Object

4

1 回答 1

15

这是Ladislav Thon 的一个非常清楚的解释

[...] 有一个简单的建议,实际上在语义上是正确的:在声明class C extends SC with M1, M2, M3 implements I1, I2 { ... }中,想象一下extends子句内容周围的括号。它们看起来像这样:class C extends (SC with M1, M2, M3) implements I1, I2 { ... }。这意味着 C 类没有扩展 SC,它扩展了 SC_with_M1_with_M2_with_M3。

或者,换一种说法:类声明有一个extends子句和一个implements子句,但它没有with子句。相反,with子句属于extends子句。

Florian Loitsch的另一点

当您使用 mixin 扩展“Object”时,第一个 mixin 总是可以代替“Object”。

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

于 2013-06-20T08:52:56.343 回答