是否可以将mixin应用于类而不从目标类继承任何其他类?例如,我可以实现以下内容:
class User with Persistence {
// implementation
}
您在飞镖中的大多数Mixins示例似乎都与继承相结合。
提前致谢!
答案 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指出的那样,实际上它不会限制你,但是 使语法反映底层结构很重要。