Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby के टर्नरी ऑपरेटर को मास्टर करना: कॉम्पैक्ट कंडीशनल लॉजिक के लिए त्वरित गाइड

Ruby में टर्नरी ऑपरेटर क्या है?

एक टर्नरी ऑपरेटर तीन भागों से बना होता है, इसी से "टर्नरी" शब्द आया है। इन भागों में एक कंडीशनल स्टेटमेंट और दो संभावित परिणाम शामिल हैं।

दूसरे शब्दों में, एक टर्नरी आपको केवल एक लाइन कोड में एक कॉम्पैक्ट if/else एक्सप्रेशन लिखने का एक तरीका देता है।

उदाहरण के लिए:

 if apple_stock > 1
  :eat_apple
else
  :buy_apple
end 

यह बन सकता है:

 apple_stock > 1 ? :eat_apple : :buy_apple 

टर्नरी ऑपरेटर का धन्यवाद!

प्रश्न...

यह वास्तव में कैसे काम करता है और उचित सिंटैक्स क्या है?

आइए पता लगाते हैं।

अपना खुद का टर्नरी लिखने के लिए एक टेम्पलेट

यदि हम टर्नरी ऑपरेटर के सिंटैक्स को सामान्यीकृत करते हैं तो आपको एक "फिल इन द ब्लैंक्स" प्रकार का टेम्पलेट मिलता है।

यह इस तरह दिखता है:

 condition ? true : false 

टर्नरी ऑपरेटर का पहला भाग कंडीशन है, जैसा कि वह कंडीशन जिसे आप चेक करना चाहते हैं कि वह true है या नहीं।

उसके बाद, हमारे पास एक क्वेश्चन मार्क (?) है।

यह सिंटैक्स का हिस्सा है!

यह है कि Ruby कैसे जानता है कि आप एक टर्नरी ऑपरेटर लिख रहे हैं।

अगला:

हमारे पास वह कोड है जिसे आप चलाना चाहते हैं यदि कंडीशन true निकलती है, पहला संभावित परिणाम।

फिर एक कोलन (:), एक और सिंटैक्स एलिमेंट।

अंत में, हमारे पास वह कोड है जिसे आप चलाना चाहते हैं यदि कंडीशन false है, दूसरा संभावित परिणाम।

उदाहरण:

 "chocolate".size > 4 ? "चार कैरेक्टर्स से अधिक" : "चार कैरेक्टर्स से कम" 
  • Condition => "chocolate".size > 4
  • If True => "चार कैरेक्टर्स से अधिक"
  • Else => "चार कैरेक्टर्स से कम"

ये तीन भाग हर टर्नरी एक्सप्रेशन के घटक हैं।

अपने ? को कंडीशन और संभावित परिणामों के बीच न भूलें, भले ही मेथड का नाम क्वेश्चन मार्क में समाप्त होता हो।

उदाहरण:

 "".empty? ? "हाँ" : "नहीं" 

इसे अनदेखा करना आसान है, इसलिए इस तरह का कोड लिखते समय ध्यान दें।

कॉम्प्लेक्स टर्नरी ऑपरेटर्स

टर्नरी ऑपरेटर का गलत उपयोग किया जा सकता है।

जब भी आप इसके साथ कुछ कॉम्प्लेक्स करना चाहते हैं तो यह एक बुरा विचार बनने लगता है।

उदाहरण के लिए:

आप एक टर्नरी एक्सप्रेशन के परिणाम को एक वेरिएबल में असाइन कर सकते हैं।

 a = 10 > 5 ? "yes" : "no" 

यह ठीक है।

लेकिन जब आपके संभावित परिणामों में स्पेस होते हैं तो यह अधिक जटिल होने लगता है।

यहाँ एक उदाहरण है:

 10 > 5 ? (puts "yes") : (puts "no") 

हमें यहाँ पैरेन्थिसिस का उपयोग करना होगा।

क्यों?

क्योंकि यदि आप नहीं करते हैं, तो आपको एक SyntaxError मिलता है।

ये पैरेन्थिसिस इस कोड को थोड़ा समझने में कठिन बनाते हैं, जो रीडेबिलिटी और टर्नरी का उपयोग करने के स्टाइल लाभों को कम करता है।

टर्नरी का उपयोग करना है या नहीं, यह चुनते समय इसे ध्यान में रखें।

टर्नरी ऑपरेटर्स और ऑपरेटर प्रीसेडेंस

टर्नरी एक्सप्रेशन के साथ आने वाला एक और मुद्दा ऑपरेटर प्रीसेडेंस है।

यहाँ एक उदाहरण है:

 [].tap { |a| a << "ccccc".size == 0 ? "empty" : "not empty" } # [5] 

मैं या तो "empty" या "not empty" की उम्मीद करूंगा, हमारे टर्नरी के लिए दो संभावित परिणाम, लेकिन हमें बजाय 5 मिला।

क्या हो रहा है?

यह पता चला है कि Ruby और अधिकांश प्रोग्रामिंग लैंग्वेजेस अलग-अलग प्राथमिकता स्तरों के साथ एक्सप्रेशन को प्रोसेस करते हैं।

यह सरल अंकगणित में भी होता है!

जैसा कि आप जानते हैं, गुणा का मूल्यांकन जोड़ और घटाव से पहले किया जाता है।

इसी तरह, Ruby में, एक मेथड कॉल (<< और size) टर्नरी ऑपरेटर पर प्रीसेडेंस लेता है, जो अंतिम उदाहरण में व्यवहार की व्याख्या करता है।

आप इसे पैरेन्थिसिस से हल कर सकते हैं:

 [].tap { |a| a << ("bbbbb".size == 0 ? "empty" : "not empty") } # ["not empty"] 

अपने टर्नरी ऑपरेटर्स लिखते समय ध्यान में रखने वाली एक और बात!

वीडियो ट्यूटोरियल

सारांश

आपने Ruby में टर्नरी कंडीशनल ऑपरेटर के बारे में सीखा, यह ऑपरेटर आपको कॉम्पैक्ट कंडीशनल स्टेटमेंट्स लिखने की अनुमति देता है जो स्थिति के आधार पर आपके कोड को पढ़ने में आसान या कठिन बना सकते हैं।

अब आपकी बारी है! जो आपने सीखा उसका अभ्यास करें ताकि आप इस ज्ञान को अपने दिमाग में इंस्टॉल कर सकें।

पढ़ने के लिए धन्यवाद 🙂


  1. Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना

    Ruby में किसी मेथड को वैकल्पिक नाम देने के दो तरीके हैं: alias (कीवर्ड) alias_method चूंकि ये दोनों थोड़े अलग तरीके से एक ही काम करते हैं, इसलिए यह विषय भ्रमित करने वाला हो सकता है। यह छवि अंतरों का सारांश है: आइए इन अंतरों को विस्तार से समझते हैं ताकि आपको ठोस समझ मिल सके! alias कीवर्ड पहला है a

  1. Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड

    आइए grep मेथड के बारे में बात करते हैं। यह मेथड आपके लिए क्या कर सकता है? आप enumerable ऑब्जेक्ट्स को फ़िल्टर करने के लिए Grep का उपयोग कर सकते हैं, जैसे Arrays और Ranges। "लेकिन select पहले से ही ऐसा करता है!" हाँ, लेकिन grep अलग तरीके से काम करता है और अलग परिणाम उत्पन्न करता है। आइए कुछ

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।