2015-02-08 15 views
5

क्या प्रारंभकर्ता में इसे सेट करने के बजाय डिफ़ॉल्ट संपत्ति मान का उपयोग करने के लिए तेज़ी से कोई कमी है?स्विफ्ट: आरंभिक में डिफ़ॉल्ट संपत्ति बनाम सेटिंग

जैसे

class Foo: UIViewController { 
    let value = UIRefreshControl() 
} 

बनाम

class Bar: UIViewController { 
    var value : UIRefreshControl! 

    // or using init() 
    override func viewDidLoad() { 
     self.value = UIRefreshControl() 
    } 
} 

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

उत्तर

2

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

+0

आह, लेकिन सिद्धांत रूप में यदि यह 'चलो' के साथ स्थिर है तो यह कोई चिंता सही नहीं होगी? यद्यपि निश्चित रूप से 'लेट' को डिफ़ॉल्ट मान के साथ कक्षा को कम एक्स्टेंसिबल बना दिया जाएगा ... –

+1

आप वास्तव में प्रारंभकर्ता के अंदर 'let' घोषित गुणों को फिर से असाइन कर सकते हैं। अजीब बात है लेकिन सच है! –

+1

इसके अलावा, बस यह जोड़ना चाहते हैं कि मुझे लगता है कि डिफ़ॉल्ट संपत्ति मान बहुत अच्छे हैं और जहां भी संभव हो मैं उनका उपयोग करता हूं। जवाब ही एकमात्र कमी है- ऐसे सकारात्मक कारण हैं जो लगभग सभी मामलों में उन्हें सार्थक बनाते हैं। –

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