2011-10-10 16 views
12

मैंने language documentation के माध्यम से स्किम किया है और ऐसा लगता है कि Google डार्ट मिश्रणों का समर्थन नहीं करता है (इंटरफेस में कोई विधि निकाय नहीं, कोई एकाधिक विरासत नहीं, रूबी जैसी मॉड्यूल नहीं)। क्या मैं इसके बारे में सही हूं, या डार्ट में मिश्रित-जैसी कार्यक्षमता रखने का कोई और तरीका है?क्या Google डार्ट मिश्रण मिश्रण का समर्थन करता है?

+0

आप वर्तमान में सही जवाब :) को अद्यतन करने के लिए चाहते हो सकता है –

उत्तर

9

मुझे लगता है कि रिपोर्ट करने के लिए खुश हूँ जवाब अब हाँ है!

एक मिश्रण वास्तव में केवल उप-वर्ग और एक सुपरक्लास के बीच डेल्टा है। फिर आप उस डेल्टा को दूसरे वर्ग में "मिश्रण" कर सकते हैं।

उदाहरण के लिए, इस सार वर्ग पर विचार करें:

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}; 
    } 
} 
mixin परिभाषा पर

प्रतिबंध शामिल हैं:

  • एक निर्माता
  • सुपर क्लास वस्तु
  • सुपर

कुछ अतिरिक्त पढ़ने के लिए कोई कॉल शामिल है की घोषणा नहीं चाहिए:

2

संपादित करें:

डार्ट टीम अब released their proposal for Mixins, मूल issue for Mixins was here है।

यह अभी तक लागू नहीं है, लेकिन इस बीच में मैं जो लोकप्रिय Underscore.js कार्यात्मक उपयोगिता पुस्तकालय का एक बंदरगाह शामिल डार्ट के लिए एक विस्तृत mixins पुस्तकालय जारी किया है: https://github.com/mythz/DartMixins

संबंधित मुद्दे