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' 不能用作 mixin,因为它扩展了 Object 以外的类”
我知道你会回复说以下工作正常:
class C extends Object with A, B {
String get c => a + b;
}
但是我正在设计一个库,它将导出一些共享一些通用功能(由基本 mixin 提供)的 mixin,这与他们的行为相关,但与我的图书馆客户无关。
如果可能的话,我什至想让这个基本的 mixin 成为私有的。
对此有什么想法吗?