Raf*_*-RJ 5 traits mixins dart
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';
}
Run Code Online (Sandbox Code Playgroud)
客户使用情况
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
}
Run Code Online (Sandbox Code Playgroud)
Dart分析器抱怨说"类'B'不能用作mixin,因为它扩展了Object以外的类"
我知道你会回复说以下工作正常:
class C extends Object with A, B {
String get c => a + b;
}
Run Code Online (Sandbox Code Playgroud)
但是我正在设计一个库,它将导出一些具有一些共同功能的mixin(由基础mixin提供),这与他们的行为有关,但与我的库客户端无关.
如果可能的话,我甚至想把这个基础mixin私有化.
有什么想法吗?
其规格仍在不断发展。我认为他们打算在未来的版本中实现完全基于 mixin 的继承。
这就是我从 Gilad Bracha(飞镖规格背后的大脑)的演讲中收集到的内容(快进到相应的部分):http://youtu.be/yXY5bGlhxlw ?t=18m42s
归档时间: |
|
查看次数: |
831 次 |
最近记录: |