2012-12-14 10 views
14

आप डार्ट क्लास के लिए नेमस्पेस कैसे बनाते हैं? मैं एक सी # पृष्ठभूमि से आया हूं, जहां कोई सिर्फ namespace SampleNamespace { } का उपयोग करेगा।आप डार्ट क्लास का नाम कैसे देते हैं?

आप डार्ट में इसे कैसे प्राप्त करते हैं?

उत्तर

42

डार्ट में नेमस्पेस की अवधारणा नहीं है, लेकिन इसके बजाय इसमें पुस्तकालय हैं। आप लाइब्रेरी को किसी नामस्थान के समतुल्य होने के लिए विचार कर सकते हैं, जिसमें लाइब्रेरी एकाधिक फ़ाइलों से बनायी जा सकती है, और इसमें कई वर्ग और फ़ंक्शन शामिल हैं।

डार्ट में गोपनीयता क्लास स्तर की बजाय लाइब्रेरी में भी है (अंडरस्कोर के साथ प्रीफ़िक्स किए गए कुछ भी उस पुस्तकालय के लिए निजी है)।

एक पुस्तकालय (परिभाषित करने पुस्तकालय एक उपयोगिताओं के उदाहरण का उपयोग का एक उदाहरण:।

// utilities.dart 
library utilities; // being the first statement in the library file 

आप part कीवर्ड का उपयोग करके एक ही पुस्तकालय की अन्य फ़ाइलों हिस्सा बना सकते हैं भाग फ़ाइलें केवल व्यवस्थित करने में मदद करने के लिए उपयोग किया जाता है आपका कोड; आप अपने सभी वर्गों को एक लाइब्रेरी फ़ाइल में डाल सकते हैं, या उन्हें कई भाग फ़ाइलों (या भाग फाइलों और लाइब्रेरी फ़ाइल) के बीच विभाजित कर सकते हैं - इसका निष्पादन पर कोई प्रभाव नहीं पड़ता है। मुख्य लाइब्रेरी फ़ाइल को रखना स्टाइलिस्ट है src/ फ़ोल्डर में एक मूल फ़ोल्डर, और भाग फ़ाइलें।

परीक्षा का विस्तार भाग फाइल दिखाने के लिए ई।

// utilities.dart 
library utilities; 

part "src/string_utils.dart"; 
part "src/date_utils.dart"; 

उन हिस्सा फ़ाइलों तो पुस्तकालय से पुनः लिंक वे का हिस्सा हैं part of बयान का उपयोग करके:

// src/string_utils.dart 
part of utilities; 

// functions and classes 
String reverseString(s) => // implementation .... 

String _stringBuilder(strings) => // a private (to the library) function, 
            // indicated by the leading underscore 

//... snip other classes and functions 

अब आप एक पुस्तकालय में एक समारोह से युक्त है, तो आप उस पुस्तकालय का उपयोग कर सकते कहीं import द्वारा पुस्तकालय ing:

// my_app.dart; 
import "path/to/library/utilities.dart"; 

main() { 
    var reversed = reverseString("Foo"); 
    // _stringBulider(["a","b"]); // won't work - this function is 
           // only visible inside the library 
} 

आपको अपनी लाइब्रेरी में अन्य नाम पर संघर्ष से बचने के लिए (जहां दो पुस्तकालयों आयात हो सकता है चाहते हैं, दोनों एक reverseString() समारोह युक्त, आप as कीवर्ड का उपयोग करें:

// my_app.dart; 
import "path/to/library/utilities.dart"; 
import "some/other/utilities.dart" as your_utils; 

main() { 
    var reversed = reverseString("Foo"); 
    var your_reversed_string = your_utils.reverseString("Bar"); 
} 

इंपोर्ट स्टेटमेंट भी संकुल के उपयोग के रूप पब द्वारा आयात करता है,, डार्ट के पैकेज मैनेजर, या कहीं और तो आप भी GitHub पर अपने पुस्तकालय होस्ट कर सकते हैं, और इतनी के रूप में अपने पुस्तकालय संदर्भ:

// my_app.dart; 
import "package:utilities/utilities.dart"; 

main() { 
    var reversed = reverseString("Foo");   
} 

पब निर्भरता एक pubspec.yaml फ़ाइल है, जो जहां पुस्तकालय को खोजने के लिए पब बताता में परिभाषित किया गया है। आप pub.dartlang.org

में और अधिक जानकारी प्राप्त कर सकते हैं यह ध्यान रखें कि केवल पुस्तकालय फ़ाइल कर सकते हैं महत्वपूर्ण है:

  • import कथन। भाग फाइल नहीं कर सकते हैं।
  • में library कीवर्ड शामिल है। भाग फाइल नहीं कर सकते हैं।
  • में part फ़ाइलें हैं। भाग फाइल नहीं कर सकते हैं।

एक अंतिम बात यह है कि एक runnable एप्लिकेशन फ़ाइल (और होने की संभावना है) एक लाइब्रेरी फ़ाइल, और भी हिस्सा फ़ाइलों

// my_app.dart; 
library my_app; 

import "package:utilities/utilities.dart"; 

part "src/edit_ui.dart"; 
part "src/list_ui.dart"; 
part "src/foo.dart"; 

main() { 
    var reversed = reverseString("Foo");  
    showEditUi(); // perhaps defined in edit_ui.dart....? 
} 
+0

ऐसा लगता है से बनाया जा सकता है कि 'भाग का उपयोग कर निर्देश निराश है। * "नोट: आपने भाग निर्देश के बारे में सुना होगा, जो आपको लाइब्रेरी को एकाधिक डार्ट फ़ाइलों में विभाजित करने की अनुमति देता है। हम अनुशंसा करते हैं कि आप भाग का उपयोग करने से बचें और इसके बजाय मिनी लाइब्रेरी बनाएं।" * - https: //www.dartlang। org/गाइड/पुस्तकालयों/बनाने-पुस्तकालय-संकुल – Subfuzion