如何在没有继承的情况下使用Mixins?

时间:2014-07-08 03:51:54

标签: dart mixins

是否可以将mixin应用于类而不从目标类继承任何其他类?例如,我可以实现以下内容:

class User with Persistence {
  // implementation
}

您在飞镖中的大多数Mixins示例似乎都与继承相结合。

提前致谢!

1 个答案:

答案 0 :(得分:6)

如果你想使用mixin,你必须从另一个类继承。但是,您可以直接从Object继承:

class User extends Object with Persistence {
  // implementation
}

但实际上,你也可以继承Persistence,这也会产生同样的效果:

class User extends Persistance {
  // implementation
}

Gilad Bracha explains语法是专门设计的:

  

我认为在这里理解语义模型很重要。 "与"   是mixin应用程序运算符,它有两个参数:a   超类和mixin,并产生一个类。用Foo"说"在   隔离与说>>一样有意义。 2(你可以解释两者   作为咖喱功能,但距离Dart很远)。当你写作   " C用M"扩展S,你指定了一个超类   扩展关键字,就像你写的那样" C扩展K"除了   超类不是通过标识符指定的,而是通过mixin指定的   应用。因此,超级类别将是" S与M"。

     

正如Lasse指出的那样,实际上它不会限制你,但是   使语法反映底层结构很重要。