2011-10-10 5 views
12

私はlanguage documentationでスキミングしました.Graph Dartはmixins(インターフェースにメソッド本体がなく、多重継承もなく、Rubyのようなモジュールもありません)をサポートしていないようです。私はこれについて正しいのですか、あるいはDartでmixinのような機能を持たせる別の方法がありますか?Googleダーツはミックスインをサポートしていますか?

+0

あなたは現在、正しい答えにアップデートすることをお勧めします:) –

答えて

9

私がいることを報告して満足しています答えは今はいです!

mixinは本当にサブクラスとスーパークラスのデルタです。そのデルタを別のクラスに「ミックス」することができます。

たとえば、この抽象クラスを考えてみます。

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}; 
    } 
} 

制限事項は次のとおりです。

  • はスーパーが
  • スーパー
  • への呼び出し

いくつかの追加の読み取りが含まれていないオブジェクトである

  • コンストラクタを宣言してはいけません
  • 関連する問題