2010-08-24 9 views
26

मैंएक्शनस्क्रिप्ट -3 में एकाधिक कन्स्ट्रक्टर नहीं हो सकते हैं?

public function Shard() { 
    } 

    public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number) 
    { 
     ... 
    } 

है और मैं दूसरे निर्माता पर मिल गया:

एकाधिक निर्माता परिभाषाओं पाया। कोड में कन्स्ट्रक्टर को परिभाषित नहीं किया जा सकता है।

तो, एक्शनस्क्रिप्ट -3 में एकाधिक निर्माता नहीं हो सकते हैं?

+1

आप कई रचनाकार क्यों चाहते हैं? क्या कुछ पैरामीटर वैकल्पिक हैं? – timrwood

उत्तर

33

नहीं आप एक से अधिक contructor न अलग हस्ताक्षर के साथ एक ही कार्य हो सकता है, लेकिन यदि आप डिफ़ॉल्ट तर्कों का उपयोग कर सकते हैं:

public function Shard(x:Number=NaN, y:Number=NaN) { 
    //... 
} 

तो आप new Shard() या new Shard(100) या new Shard(100, 200)

कॉल कर सकते हैं या आप कर सकते हैं परिवर्तनीय तर्कों का भी उपयोग करें:

public function Shard(...args){ 
if (args.length==0) { 
    //... 
} else { 
    //... 
    var firstArg:Object=args[0]; 
    //... 
} 
} 
12

यह उससे भी व्यापक है। AS3 के पास function overloading के लिए बिल्कुल कोई समर्थन नहीं है।

आप पैरामीटर डिफ़ॉल्ट के साथ कई रचनाकारों की उपस्थिति को अनुकरण कर सकते हैं और/या विभिन्न init विधियों के लिए पैरामीटर को गतिशील रूप से प्रेषित कर सकते हैं। वैकल्पिक रूप से, कस्टम ऑब्जेक्ट कारखानों या स्थिर निर्माण विधियों में मदद मिल सकती है।

+2

+1। मैंने एक नए उदाहरण (जैसे कारखानों की तरह) शुरू करने और लौटने के लिए स्थिर तरीकों का उपयोग किया है। आम तौर पर, इन तरीकों को एक ही कक्षा में परिभाषित किया जाता है और केवल कॉलिंग कोड के लिए इंटरफ़ेस को सरल बनाने के लिए होता है। यह कुछ मामलों में एक सरल और प्रभावी कामकाज है (हालांकि यदि आप इन "रचनाकारों" में से अलग होना चाहते हैं तो आपको नाम बदलना होगा क्योंकि संकलक आपके लिए ऐसा नहीं करता है) –

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