101 स्विफ्ट - कक्षाएं, चर, गुण और तरीके

जैसा कि वादा किया गया था, यहां नई स्विफ्ट भाषा में कार्यक्रम सीखने की मेरी पहली किस्त है!

स्विफ्ट में कक्षाएं परिभाषित करना

निम्नलिखित कोड एक स्विफ्ट वर्ग परिभाषा का एक उदाहरण दिखाता है:

स्विफ्ट में एक क्लास घोषित करने के लिए, आप क्लास के नाम के बाद क्लास कीवर्ड का उपयोग करते हैं। यदि इसमें एक सुपरक्लास है, तो आप एक उपनिवेश और सुपरक्लास का नाम जोड़ते हैं। कक्षा की शुरुआत और अंत घुंघराले ब्रेसिज़ को खोलने और बंद करने से संकेत मिलता है।

स्विफ्ट में, कक्षाओं को ऑब्जेक्टिव-सी की तुलना में एकल .swift स्रोत कोड फ़ाइल में परिभाषित किया जाता है, जहां कक्षाएं दो अलग-अलग फ़ाइलों, एक हेडर (.h) फ़ाइल और एक कार्यान्वयन (.m) फ़ाइल में परिभाषित की जाती हैं।

भिन्नता की घोषणा

निम्नलिखित कोड एक चर घोषणा का एक उदाहरण दिखाता है:

आप वैरिएबल के नाम के बाद वाले वेरिएबल कीवर्ड के साथ एक वैरिएबल डिक्लेरेशन शुरू करते हैं। इसके बाद, आप एक बृहदान्त्र जोड़ते हैं, उसके बाद चर प्रकार। बाद में, आप (=) असाइनमेंट ऑपरेटर का उपयोग करके वैरिएबल को एक मान दे सकते हैं।

स्विफ्ट में, यदि आप किसी वैरिएबल को प्रारंभिक मान देते हैं, तो आपको चर प्रकार निर्दिष्ट करने की आवश्यकता नहीं है जैसा कि निम्नलिखित कोड में दिखाया गया है:

आप ऐसा कर सकते हैं, क्योंकि स्विफ्ट में कुछ प्रकार का अनुमान है, जहां यह पता लगा सकता है, या आपके द्वारा इसे दिए गए मूल्य के आधार पर चर के प्रकार का अनुमान लगा सकता है।

ऑब्जेक्टिव-सी में आप क्लास लेवल पर इंस्टेंस वेरिएबल और तरीकों के भीतर लोकल वैरिएबल घोषित कर सकते हैं। स्विफ्ट में, कोई क्लास-स्तरीय चर नहीं हैं - केवल स्थानीय चर जो आप विधियों के भीतर घोषित करते हैं। हालाँकि, आप वर्ग स्तर पर संपत्तियों की घोषणा कर सकते हैं (नीचे घोषित गुण अनुभाग देखें)।

तारांकन का अंत

Objective-C में आप यह दर्शाने के लिए एक तारांकन चिह्न का उपयोग करते हैं कि एक चर एक वस्तु के लिए एक संकेतक रखता है। स्विफ्ट में, एक निरंतर या चर में मेमोरी में एक पते के लिए एक संकेतक हो सकता है (हालांकि एक सीधा सूचक नहीं), लेकिन आपको इस संदर्भ में तारांकन का उपयोग करने की आवश्यकता नहीं है।

सरल गुणों की घोषणा

निम्नलिखित कोड एक संपत्ति घोषणा का एक उदाहरण दिखाता है:

जैसा कि आप देख सकते हैं, यह एक चर घोषित करने के समान है, सिवाय इसके कि आप एक विधि के बजाय वर्ग स्तर पर एक संपत्ति की घोषणा करते हैं।

चरों के साथ, यदि आप किसी संपत्ति का प्रारंभिक मूल्य निर्दिष्ट करते हैं, तो आपको संपत्ति के प्रकार को निर्दिष्ट करने की आवश्यकता नहीं है। आप आरंभिक विधियों के भीतर से गुण भी इनिशियलाइज़ कर सकते हैं (विवरण के लिए इनिशियलाइज़र पर नीचे अनुभाग देखें।) निम्न कोड एक प्रकार को निर्दिष्ट किए बिना एक संपत्ति घोषित करने का एक उदाहरण दिखाता है:

ऑब्जेक्टिव-सी में, संपत्तियों में आमतौर पर बैकिंग चर होते हैं, जिसमें संपत्ति का वास्तविक मूल्य संग्रहीत किया जाता था। स्विफ्ट संपत्तियों और उदाहरण चर की अवधारणाओं को एकीकृत करके गुणों को सरल करता है। गुण अब एक बैकिंग इंस्टेंस चर नहीं है। संपत्ति के बारे में सब कुछ एक ही स्थान पर घोषित किया गया है।

स्विफ्ट में, आपको किसी संपत्ति को संदर्भित करने के लिए स्व- कीवर्ड का उपयोग करने की आवश्यकता नहीं है जब तक कि जिस पद्धति में आप कोड लिख रहे हैं, उसमें संपत्ति के समान नाम वाला पैरामीटर है।

संगणित गुणों की घोषणा

स्विफ्ट में भी ऐसे गुण होते हैं जो निम्नलिखित कोड में दिखाए गए तरीकों और तरीकों से जुड़े होते हैं :

इस उदाहरण में, थर्मामीटर वर्ग के पास एक साधारण तापमान हैफ्रेनहाइट संपत्ति और एक संगोष्ठी तापमान गुण है।

ध्यान दें कि थर्मामीटर वर्ग के प्राप्त और सेट किए गए तरीके एक उदाहरण चर का संदर्भ नहीं देते हैं, क्योंकि स्विफ्ट में उदाहरण चर जैसी कोई चीज नहीं है!

इस स्थिति में, प्राप्त विधि तापमानफारेनहाइट गुण से मान प्राप्त करता है, इसे सेल्सियस में परिवर्तित करता है और मान लौटाता है। सेट विधि इसके लिए दिए गए मान को लेती है, इसे फ़ारेनहाइट में परिवर्तित करती है और फिर तापमान में फ़ारेनहाइट गुण में संग्रहीत करती है।

प्रॉपर्टी की सेट विधि में दिया गया मान एक अनुमानित नाम पैरामीटर में संग्रहीत होता है जिसे न्यूवैल्यू कहा जाता है। यदि आप भिन्न पैरामीटर नाम का उपयोग करना चाहते हैं, तो आप निम्न कोड में दिखाए अनुसार सेट के बाद कोष्ठक में नाम निर्दिष्ट कर सकते हैं:

एक पैरामीटर नाम निर्दिष्ट करना आपके कोड को समझने में आसान बना सकता है। इस उदाहरण में, पैरामीटर का नाम सेल्सियसवैल्यू पर सेट करने से यह स्पष्ट हो जाता है कि सेट विधि सेल्सियस से फ़ारेनहाइट में मान को परिवर्तित कर रही है।

घोषणा करने के तरीके

निम्नलिखित कोड में एक स्विफ्ट विधि घोषणा का उदाहरण है:

जैसा कि ऑब्जेक्टिव-सी के साथ, स्विफ्ट में, आप उस वर्ग के खुलने और बंद होने वाले कर्ल ब्रेसिज़ के बीच एक इंस्टेंस विधि की घोषणा करते हैं, जो उसका है।

विधि घोषित करने के लिए, आप पहले फंक कीवर्ड को निर्दिष्ट करते हैं, उसके बाद विधि के नाम से। यदि विधि में पैरामीटर हैं, तो आप उन्हें कोष्ठकों में शामिल करते हैं। प्रत्येक पैरामीटर के लिए, आप एक बृहदान्त्र के बाद पैरामीटर का नाम निर्दिष्ट करते हैं, इसके प्रकार के बाद। यदि विधि में रिटर्न वैल्यू है, तो आप एक हाइफ़न जोड़ते हैं और साइन ( -> ) से अधिक होता है और उसके बाद रिटर्न वैल्यू टाइप होता है।

निम्न कोड में एक विधि का उदाहरण है जो बिना किसी पैरामीटर के स्वीकार करता है और कुछ भी नहीं लौटाता है:

जैसा कि आप देख सकते हैं, अगर कोई पैरामीटर नहीं हैं, तो विधि के नाम के बाद कोष्ठक आवश्यक हैं। एक विधि जो कुछ भी नहीं लौटाती है, कोष्ठक के बाद वापसी मूल्य सूचक ( -> ) की आवश्यकता नहीं होती है।

प्रारंभिक तरीके

निम्न कोड में एक initializer विधि का एक उदाहरण होता है जिसका उपयोग किसी वर्ग को प्रारंभ करने के लिए किया जाता है।

प्रारंभिक तरीकों को हमेशा init -C के विपरीत, init नाम दिया जाता है और कभी भी मान वापस नहीं किया जाता है। उपरोक्त उदाहरण में, इनिट विधि एक वर्तमान तापमान पैरामीटर को स्वीकार करती है जिसमें आप प्रारंभिक तापमान पास कर सकते हैं। यह मान तब तापमानफारेनहाइट संपत्ति में संग्रहीत किया जाता है।

आप निम्न कोड नमूने में दिखाए गए अनुसार कई initalizer तरीके बना सकते हैं:

इस उदाहरण में, दोनों विधियों को इनिट का नाम दिया गया है, इसलिए नामों को अद्वितीय बनाने के लिए, एक बाहरी नाम मापदंडों को सौंपा गया है- फ़ारेनहाइट और फ्रैक्शन से । यह पूर्ण विधि नाम init (fromFahrenheit :) और init (fromC सेल्सियस) क्रमशः बनाता है।

यह ध्यान देने योग्य है कि स्विफ्ट में, init के तरीके विरासत में नहीं मिले हैं। व्यावहारिक दृष्टिकोण से, इसका मतलब यह है कि आपको किसी भी कोड को एक init पद्धति में नहीं रखना चाहिए जिसे आप उप-वर्ग में ओवरराइड करने में सक्षम होना चाहते हैं। यदि आपके पास एक ऐसा कोड है जिसे आप किसी वर्ग के init चरण के दौरान निष्पादित करना चाहते हैं और उप-वर्ग में उस कोड को ओवरराइड करने में सक्षम होना चाहते हैं, तो आप एक अलग विधि बना सकते हैं, प्रारंभ कोड को उस विधि में रख सकते हैं, और फिर उस विधि को कॉल कर सकते हैं init

एक कक्षा का एक उदाहरण बनाना

कक्षा का एक उदाहरण कैसे बनाया जाए इसका एक उदाहरण इस प्रकार है:

जैसा कि आप देख सकते हैं, कक्षा का एक उदाहरण बनाने के लिए, आप कक्षा के लिए एक संदर्भ रखने के लिए एक चर घोषित करते हैं, एक बराबर चिह्न (असाइनमेंट ऑपरेटर) टाइप करें और फिर कोष्ठक के बाद वर्ग का नाम।

निष्कर्ष

ये कुछ बहुत ही मूल बातें हैं जिन्हें आपको स्विफ्ट प्रोग्रामिंग के साथ शुरू करने के लिए जानना आवश्यक है। आगामी पोस्टों में मैं स्विफ्ट की नई वाक्य रचना और संरचना के साथ कुशल बनने में आपकी मदद करने के लिए भाषा में गहराई से गोता लगाऊंगा।