का उपयोग करें countOfAttendees
और countOfPaidAttendees()
।
एक गणना किया गया चर वह है जो हर बार गणना किए जाने पर गणना किए गए मान को लौटाता है। यही है, यह एक मूल्य नहीं रखता है। आंतरिक रूप से इसे एक फ़ंक्शन के रूप में लागू किया जाता है।
एक फ़ंक्शन के साथ क्या अंतर है?
- शब्दार्थ, एक राज्य है, एक कार्य एक क्रिया है।
- एक फ़ंक्शन निजी संग्रहण तक पहुंच को नियंत्रित करता है। एक गणना चर एक अधिक कॉम्पैक्ट तरीके से ही कर सकता है। उदाहरण है ।
- एक गणना किए गए चर का उपयोग केवीओ के साथ किया जा सकता है, जो #keypath के रूप में उत्तीर्ण होता है, और इसमें अवलोकन के लिए सुविधाएं हैं: willSet, didSet।
आपको एक चर का उपयोग करना चाहिए
- यह फेंकता नहीं है
- यह एक साधारण संपत्ति देता है
- इसका कोई साइड इफेक्ट या क्रिया नहीं है
- यह O (1) है, अर्थात यह एक महत्वपूर्ण लागत नहीं लगाता है। आपके उदाहरण में यह O (n) होगा।
- यह आदर्श है। एकाधिक समान इनवॉइस समान मान लौटाते हैं या ऑब्जेक्ट को उसी स्थिति में सेट करते हैं।
एक समारोह में एक चर पसंद करने के लिए अप्रासंगिक कारण
- एक कंप्यूटेड वैरिएबल आपको टाइपिंग () से बचाता है। हालांकि, स्पष्टता संक्षिप्तता से अधिक महत्वपूर्ण है, इसलिए यह एक कमजोर तर्क है।
- एक चर केवल पढ़ने / लिखने के रूप में चर जा सकता है। एक फ़ंक्शन इंगित करता है कि यह हमेशा केवल पढ़ा जाता है। हालाँकि, Apple array.count जैसे केवल-पढ़ने योग्य चर के लिए गुणों का उपयोग करता है। जब संदेह में मंच के साथ स्थिरता चाहते हैं।
साधन
से WWDC 2014 - 204 क्या कोको में नया क्या है > 24:40 जब एक @property उपयोग करने के लिए
किसी ऐसी वस्तु के लिए संपत्ति का उपयोग करें जो किसी वस्तु के मूल्य या स्थिति या अन्य वस्तुओं से उसके संबंध के बारे में हो। खराब उम्मीदवार:
- चीजें जो करती हैं: लोड, पार्स, टॉगल,…। उनके नाम में क्रियाएं हैं।
- जनरेटर: init, copy, enumerated,…। ये विधियां बेकार नहीं हैं।
- तरीके जो राज्य बदलते हैं: nextObject।
से स्विफ्ट शैली एरिका Sadun द्वारा > परिकलित गुण बनाम तरीके
एक संपत्ति एक अंतर्निहित गुणवत्ता को व्यक्त करती है, जबकि एक विधि एक क्रिया करती है।
- विधियों में पैरामीटर हैं; गुण नहीं। साइड इफेक्ट्स के साथ किसी भी कॉल के लिए तरीकों को प्राथमिकता दें। यदि कोई विधि कुछ करती है (उदाहरण के लिए, यह लोड, पर्स, टॉगल या प्रिंट) या क्रिया नाम है, तो यह एक संपत्ति नहीं होनी चाहिए।
- सरल मूल्यों के लिए गुणों को प्राथमिकता दें जो आप प्राप्त कर सकते हैं और / या सेट कर सकते हैं।
- गुणों को एक प्रकार के उदाहरण के एक शब्दार्थ आंतरिक गुणवत्ता को व्यक्त करना चाहिए।
- गुण आपको willSet और didSet के माध्यम से पर्यवेक्षकों को जोड़ने की अनुमति देते हैं। संग्रहीत उदाहरण गुणों के विपरीत, संग्रहीत प्रकार के गुणों को हमेशा डिफ़ॉल्ट मान दिया जाना चाहिए।
से Kotlin कोडिंग सम्मेलनों> कार्यों गुण बनाम । ऊपर डैनियल का जवाब देखें ।
कोई प्रासंगिक जानकारी के साथ अन्य संसाधन: