gpt4 book ai didi

mixins - Google Dart 是否支持 mixin?

转载 作者:行者123 更新时间:2023-12-04 00:53:14 32 4
gpt4 key购买 nike

我浏览了language documentation而且 Google Dart 似乎不支持 mixins(接口(interface)中没有方法主体,没有多重继承,没有类似 Ruby 的模块)。我对此是否正确,或者是否有另一种方法可以在 Dart 中具有类似 mixin 的功能?

最佳答案

我很高兴地报告,现在答案是肯定的!

mixin 实际上只是子类和父类(super class)之间的增量。然后,您可以将该增量“混入”另一个类。

例如,考虑这个抽象类:

 abstract class Persistence {  
void save(String filename) {
print('saving the object as ${toJson()}');
}

void load(String filename) {
print('loading from $filename');
}

Object toJson();
}

然后您可以将其混入其他类中,从而避免继承树的污染。
 abstract class Warrior extends Object with Persistence {  
fight(Warrior other) {
// ...
}
}

class Ninja extends Warrior {
Map toJson() {
return {'throwing_stars': true};
}
}

class Zombie extends Warrior {
Map toJson() {
return {'eats_brains': true};
}
}

对 mixin 定义的限制包括:
  • 不得声明构造函数
  • 父类(super class)是对象
  • 不包含对 super
  • 的调用

    一些额外的阅读:
  • http://www.dartlang.org/articles/mixins/
  • http://blog.sethladd.com/2013/03/first-look-at-dart-mixins.html
  • 关于mixins - Google Dart 是否支持 mixin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711025/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com