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

रूबी केस स्टेटमेंट्स में महारत: बहुमुखी उपयोग और व्यावहारिक उदाहरण

जब भी आपको कुछ if / elsif स्टेटमेंट्स का उपयोग करने की आवश्यकता होती है तो आप इसके बजाय रूबी केस स्टेटमेंट का उपयोग करने पर विचार कर सकते हैं। इस पोस्ट में, आप कुछ अलग उपयोग के मामले सीखेंगे और यह वास्तव में हुड के नीचे कैसे काम करता है।

रूबी केस स्टेटमेंट्स में महारत: बहुमुखी उपयोग और व्यावहारिक उदाहरण

नोट: अन्य प्रोग्रामिंग भाषाओं में इसे स्विच स्टेटमेंट के रूप में जाना जाता है।

रूबी में केस स्टेटमेंट के घटक:

कीवर्ड विवरण
case केस स्टेटमेंट परिभाषा शुरू करता है। वह वेरिएबल लेता है जिसके साथ आप काम करने जा रहे हैं।
when हर शर्त जिसे मिलान किया जा सकता है वह एक when स्टेटमेंट है।
else यदि कुछ भी मेल नहीं खाता तो यह करें। वैकल्पिक।

रूबी केस और रेंज

case स्टेटमेंट पहली नज़र में जितना लचीला लग सकता है उससे अधिक लचीला है। आइए एक उदाहरण देखते हैं जहां हम इस आधार पर कुछ संदेश प्रिंट करना चाहते हैं कि कोई मान किस रेंज में आता है।

 case capacity
when 0
  "You ran out of gas."
when 1..20
  "The tank is almost empty. Quickly, find a gas station!"
when 21..70
  "You should be ok for now."
when 71..100
  "The tank is almost full."
else
  "Error: capacity has an invalid value (#{capacity})"
end 

मुझे लगता है कि यह कोड if / elsif संस्करण की तुलना में काफी सुंदर है।

रूबी केस और रेगेक्स

आप अपने when शर्त के रूप में नियमित अभिव्यक्तियों का भी उपयोग कर सकते हैं। निम्नलिखित उदाहरण में हमारे पास एक serial_code है जिसका प्रारंभिक अक्षर हमें बताता है कि इस उत्पाद का उपभोग करना कितना जोखिम भरा है।

 case serial_code
when /\AC/
  "Low risk"
when /\AL/
  "Medium risk"
when /\AX/
  "High risk"
else
  "Unknown risk"
end 

रूबी केस का उपयोग कब न करें

जब आपके पास एक सरल 1:1 मैपिंग होती है, तो आप ऐसा कुछ करने के लिए ललचा सकते हैं।

 case country
when "europe"
  "https://eu.example.com"
when "america"
  "https://us.example.com"
end 

मेरी राय में इसके बजाय यह करना बेहतर होगा:

 SITES = {
  "europe" => "https://eu.example.com",
  "america" => "https://us.example.com"
}
SITES[country] 

हैश समाधान अधिक कुशल और काम करने में आसान है। क्या आपको नहीं लगता?

केस कैसे काम करता है: === मेथड

आप सोच रहे होंगे कि case हुड के नीचे कैसे काम करता है। यदि हम अपने पहले उदाहरण पर वापस जाते हैं, तो यह वही हो रहा है:

 (1..20) === capacity
(21..70) === capacity
(71..100) === capacity 

जैसा कि आप देख सकते हैं, शर्त उलट जाती है क्योंकि रूबी बाईं ओर के ऑब्जेक्ट पर === कॉल करता है। === बस एक मेथड है जिसे किसी भी क्लास द्वारा लागू किया जा सकता है। इस मामले में, Range इस मेथड को तभी true लौटाकर लागू करता है जब मान रेंज के अंदर पाया जाता है।

यह है कि === रूबिनियस में कैसे लागू किया गया है (Range क्लास के लिए):

 def ===(value)
  include?(value)
end 

स्रोत: https://github.com/rubinius/rubinius/blob/master/core/range.rb#L178

प्रॉक्स + केस

=== को लागू करने वाला एक और दिलचस्प क्लास Proc क्लास है।

संबंधित पोस्ट: प्रॉक्स और लैम्ब्डा के बारे में अधिक जानें।

इस उदाहरण में मैं दो procs परिभाषित करता हूं, एक even नंबर की जांच के लिए, और दूसरा odd के लिए।

 odd = proc(&:odd?)
even = proc(&:even?)
case number
when odd
  puts "Odd number"
when even
  puts "Even number"
end 

यह वास्तव में क्या हो रहा है:

 odd.===(number)
even.===(number) 

=== का उपयोग प्रॉक्स पर करने का वही प्रभाव होता है जो call का उपयोग करने का होता है।

निष्कर्ष

आपने सीखा कि रूबी केस स्टेटमेंट कैसे काम करता है और यह कितना लचीला हो सकता है। अब आपकी बारी है कि आप अपने खुद के प्रोजेक्ट्स में इसका सर्वोत्तम उपयोग करना शुरू करें।

मुझे आशा है कि आपको यह लेख उपयोगी लगा!

कृपया इस पोस्ट को शेयर करें ताकि अधिक लोग सीख सकें! 🙂


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

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

  1. रूबी ऑब्जेक्ट्स को डेकोरेटर पैटर्न से बढ़ाएं: एक व्यावहारिक गाइड रूबी ऑब्जेक्ट्स को डेकोरेटर पैटर्न से बढ़ाएं: एक व्यावहारिक गाइड

    डेकोरेटर डिज़ाइन पैटर्न क्या है? और आप इस पैटर्न का उपयोग अपने रूबी प्रोजेक्ट्स में कैसे कर सकते हैं? डेकोरेटर डिज़ाइन पैटर्न आपको क्लास को बदले बिना नई क्षमताएं जोड़कर एक ऑब्जेक्ट को बढ़ाने में मदद करता है। आइए एक उदाहरण देखें! लॉगिंग और प्रदर्शन इस उदाहरण में हम rest-client जैसे जेम का उपयोग करके

  1. iPhone होम बटन के सभी कार्यों का अन्वेषण करें iPhone होम बटन के सभी कार्यों का अन्वेषण करें

    जब से iPhone को दुनिया के सामने पेश किया गया था, होम बटन iPhone की कार्यक्षमताओं में सबसे लगातार बना रहा है। धीरे-धीरे Apple ने इस बटन के साथ बहुत सारे नवाचार किए और अंत में यह अब अपने नवीनतम फ्लैगशिप फोन में नहीं है। लेकिन iPhone X से पहले के डिवाइस पर यह एक सिंगल बटन है लेकिन बहुत सारे कार्य करने