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

रूबी केस स्टेटमेंट के कई उपयोग

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

रूबी केस स्टेटमेंट के कई उपयोग

<ब्लॉकक्वॉट>

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

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

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

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

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

जैसा कि आप देख सकते हैं, स्थिति उलट है क्योंकि रूबी === calls को कॉल करती है बाईं ओर की वस्तु पर। === सिर्फ एक तरीका है जिसे किसी भी वर्ग द्वारा लागू किया जा सकता है। इस मामले में, Range इस विधि को केवल तभी लागू करता है जब मूल्य सीमा के अंदर पाया जाता है।

इस प्रकार === रुबिनियस में लागू किया गया है (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. रूबी उपनाम कीवर्ड का उपयोग कैसे करें

    आप रूबी पद्धति को दो तरह से वैकल्पिक नाम दे सकते हैं: उपनाम (कीवर्ड) उपनाम_विधि क्योंकि वे एक ही काम को थोड़े अलग तरीके से करते हैं, यह एक भ्रमित करने वाला विषय हो सकता है। यह छवि मतभेदों का सारांश है : आइए एक ठोस समझ पाने के लिए इन अंतरों को और अधिक विस्तार से देखें! उपनाम कीवर्ड सबसे पहले

  1. रूबी में डेकोरेटर डिजाइन पैटर्न

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

  1. iPhone पर होम बटन के अनेक उपयोग

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