小编Raf*_*-RJ的帖子

为什么Dart不允许mixin继承?

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 => …
Run Code Online (Sandbox Code Playgroud)

traits mixins dart

5
推荐指数
1
解决办法
831
查看次数

标签 统计

dart ×1

mixins ×1

traits ×1