स्विफ्ट ऑपरेटर की प्राथमिकता और सहानुभूति (उदाहरणों के साथ)

इस अनुच्छेद में आप ऑपरेटरों और ऑपरेंड के साथ एक अभिव्यक्ति का मूल्यांकन करने के लिए उपयोग किए जाने वाले नियमों के बारे में जानेंगे।

स्विफ्ट ऑपरेटर की प्राथमिकता

ऑपरेटर पूर्वता किसी दिए गए गणितीय अभिव्यक्ति का मूल्यांकन करने के लिए उपयोग किए जाने वाले नियमों का एक संग्रह है। जब एक ही अभिव्यक्ति में कई ऑपरेटरों का उपयोग किया जाता है, तो प्रत्येक भाग का मूल्यांकन एक निश्चित क्रम में किया जाता है जिसे ऑपरेटर पूर्ववर्तीता कहा जाता है। कुछ ऑपरेटरों के पास दूसरों की तुलना में अधिक प्राथमिकता होती है जो प्रभावित करती है कि अभिव्यक्ति का मूल्यांकन कैसे किया जाता है।

ऑपरेटर पूर्ववर्ती तालिका

नीचे दी गई तालिका स्विफ्ट में ऑपरेटरों की पूर्वता को सूचीबद्ध करती है। उच्च यह तालिका में दिखाई देता है, उच्च इसकी पूर्वता।

स्विफ्ट मानक लाइब्रेरी वरीयता समूह (सबसे नीची श्रेणी)
संचालक समूह उदाहरण
बिटवाइज़ शिफ्ट मिसाल >> और <>>>
गुणन की पूर्ववर्ती स्थिति & *% और * /
जोड़ पूर्वता | & + & - + - ^
रेंज फॉर्मेशन प्रीसेशन … <…
कास्टिंग वरीयता के रूप में है
निल-कोलेसिंग प्रिसेंस ??
तुलनात्मकता ! => = <= === ==
लॉजिकल कंजंक्शन प्रीसेंस &&
लॉजिकल डिसकशन प्रीसेंस ||
डिफ़ॉल्ट पूर्वता ~>
टर्नरी प्रीसेंस ;:
तीर पूर्ववर्ती कार्य ()
असाइनमेंट की प्रक्रिया | =% = / = & <> = & = * = >> = << = = = + = - =

उदाहरण 1: स्विफ्ट ऑपरेटर की प्राथमिकता

 let x = 4 + 5 * 5 print(x) 

जब आप उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 २ ९

उपरोक्त उदाहरण में, यदि आप बाएं से दाएं की अभिव्यक्ति को पढ़ते हैं, तो आप आउटपुट 45 होने की उम्मीद कर सकते हैं। लेकिन, गुणन ऑपरेटर में अतिरिक्त ऑपरेटर की तुलना में अधिक पूर्वता होती है, इसलिए अभिव्यक्ति 4 + 5 * 5 का मूल्यांकन किया जाता है 4 + (5 * 5)। इसलिए print(x)स्क्रीन में 29 आउटपुट।

निष्पादन के चरण
कदम ऑपरेटर अभिव्यक्ति मूल्य अभिव्यक्ति से लौट आए
1 है * ५ * ५ २५
+ 4 + 25 २ ९
= = प्रिंट (x) २ ९

उदाहरण 2: जटिल असाइनमेंट ऑपरेटर के साथ स्विफ्ट ऑपरेटर प्राथमिकता

 var y = 15 y += 10 - 2 * 3 print(y) 

जब आप उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 १ ९

उपरोक्त उदाहरण में, अभिव्यक्ति var y = 15चर y में 15 मान प्रदान करता है।

अगली अभिव्यक्ति y += 10 - 2 * 3में गुणन ऑपरेटर में घटाव और यौगिक असाइनमेंट ऑपरेटर ( +=) की तुलना में अधिक पूर्वता है ।

इसलिए, अभिव्यक्ति y += 10 - 2 * 3का मूल्यांकन किया जाता है y = y + (10 - (2 * 3))

निष्पादन के चरण
कदम ऑपरेटर अभिव्यक्ति मूल्य अभिव्यक्ति से लौट आए
1 है = = var y = 15 १५
* २ * ३
- 10 - 6
+ = 15 + 4 १ ९

स्विफ्ट ऑपरेटर सहयोगी

यद्यपि किसी अभिव्यक्ति का मूल्यांकन करने के लिए ऑपरेटर पूर्ववर्ती द्वारा परिभाषित पूर्वनिर्धारित नियम हैं, आप सोच रहे होंगे कि क्या होता है अगर एक ही पूर्ववर्ती स्तर के कई ऑपरेटर हैं। ऑपरेटर सहक्रियाशीलता परिभाषित करती है कि एक ही पूर्वता के ऑपरेटरों को एक साथ कैसे वर्गीकृत किया जाता है।

स्विफ्ट में, ऑपरेटर या तो बाएं-साहचर्य, दाएं-सहयोगी हो सकते हैं या उनकी कोई संगति नहीं है। ऑपरेटर जो बाएं-संबद्ध हैं, उनके ऑपरेंड को कथन के बाईं ओर से, दाईं-ओर से ऑपरेटिव ऑपरेटर्स और बिना किसी सहानुभूति के साथ ऑपरेटर्स के पास कोई परिभाषित व्यवहार नहीं है जब एक अभिव्यक्ति में अनुक्रम में उपयोग किया जाता है।

संचालक सहयोगी तालिका

नीचे दी गई सारणी में स्विफ्ट ऑपरेटरों की सहानुभूति को दिखाया गया है।

स्विफ्ट स्टैण्डर्ड लाइब्रेरी एसोसिएटिटी (न्यूनतम से उच्चतम वरीयता)
संचालक समूह उदाहरण संबद्धता
बिटवाइज़ शिफ्ट मिसाल >> और <>>> कोई नहीं
गुणन की पूर्ववर्ती स्थिति & *% और * / बाएं
जोड़ पूर्वता | & + & - + - ^ बाएं
रेंज फॉर्मेशन प्रीसेशन … <… कोई नहीं
कास्टिंग वरीयता के रूप में है कोई नहीं
निल-कोलेसिंग प्रिसेंस ?? सही
तुलनात्मकता ! => = <= === == कोई नहीं
लॉजिकल कंजंक्शन प्रीसेंस && बाएं
लॉजिकल डिसकशन प्रीसेंस || बाएं
डिफ़ॉल्ट पूर्वता ~> कोई नहीं
टर्नरी प्रीसेंस ;: सही
तीर पूर्ववर्ती कार्य () सही
असाइनमेंट की प्रक्रिया | =% = / = & <> = & = * = >> = << = = सही

उदाहरण 3: स्विफ्ट ऑपरेटर एसोसिएटिविटी

 let x = 40 / 2 * 10 print(x) 

जब आप उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 200 रु

उपरोक्त कार्यक्रम में, अभिव्यक्ति का मूल्यांकन बाईं से दाईं ओर किया जाता है क्योंकि ऑपरेटर गुणन पूर्ववर्ती समूहों में आते हैं और संबद्धता छोड़ देते हैं। इसलिए, विभाजन ऑपरेशन पहले होता है और आपको 200 परिणाम मिलते हैं । क्या होगा यदि आप पहले गुणन को निष्पादित करना चाहते हैं? आपको 2 * 10अभिव्यक्ति को () ब्रेसिज़ में लपेटने की आवश्यकता है :

 let x = 40 / (2 * 10) print(x) 

जब आप उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

आपको पूर्ववर्ती और साहचर्य तालिका को याद करने की आवश्यकता नहीं है। ज्यादातर समय, ऑपरेटरों की पूर्वता और सहूलियत अपने आप में समझ में आती है। आप हमेशा संदेह में होने पर संदर्भ के लिए तालिका का उपयोग कर सकते हैं। इसके अलावा, अपने कोड को समझने में आसान बनाने के लिए कोष्ठक का उपयोग करना बेहतर है।

दिलचस्प लेख...