是否可以将mixin应用于类而不从目标类继承任何其他类?例如,我可以实现以下内容:
class User with Persistence {
// implementation
}
Run Code Online (Sandbox Code Playgroud)
您在飞镖中的大多数Mixins示例似乎都与继承相结合.
提前致谢!
如果要使用mixin,则必须从其他类继承.但是,您可以直接从Object继承:
class User extends Object with Persistence {
// implementation
}
Run Code Online (Sandbox Code Playgroud)
但实际上,你也可以继承Persistence,它具有相同的效果:
class User extends Persistance {
// implementation
}
Run Code Online (Sandbox Code Playgroud)
Gilad Bracha 解释说语法是这样设计的:
我认为在这里理解语义模型很重要."with"是mixin应用程序运算符,它有两个参数:超类和mixin,并产生一个类.单独说"与Foo"相比,说>> 2(你可以将它们都解释为curried函数,但这与Dart相差很远).当您编写"C extends S with M"时,您正在指定extends关键字后面的超类,就像您编写"C extends K"时所做的那样,除了超类没有通过标识符指定,而是通过mixin应用程序指定.所以超类将是"S with M".
正如Lasse所指出的那样,实际上它不会限制你,但让语法反映底层结构很重要.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |