Dart不像Scala那样支持真正的mixin组合。
library some_lib;
// mixin A
abstract class A {
String get a => 'A';
}
// mixin B
abstract class B extends Object with A {
String get b => a + 'B';
}
客户端使用情况
import 'some_lib.dart';
// client usage
class Client extends Object with B {
String get c => b + 'C';
}
void main(){
print(new Client().c); // should print ABC
}
Dart 分析器抱怨说"类'B'不能用作混合,因为它扩展了对象以外的类">
我知道你会回答以下内容工作正常:
class C extends Object with A, B {
String get c => a + b;
}
但是我正在设计一个库,它将导出一些共享一些常见功能的 mixin(由基本 mixin 提供(,witch 与他们的行为相关,但与我的库客户端无关。
如果可能的话,我什至想让这个基础混合成为私有的。
对此有什么想法吗?
这方面的规格仍在不断发展。我认为他们打算在未来的版本中实现完全基于 mixin 的继承。
这就是我从吉拉德·布拉查(飞镖规格背后的大脑(的演讲中收集到的(快进到相应的部分(: http://youtu.be/yXY5bGlhxlw?t=18m42s