मामला मामला कथन - रूबी, मामला

आइए इस रूबी कोड को ध्यान में रखें:

@name = case @name
when 1 then "Noah"
when 2 then "Liam"
when 3 then "Mason"
when 4 then "Jacob"
when 5 then "William"
when 6 then "Ethan"
when 7 then "James"
when 8 then "Alexander"
when 9 then "Michael"
when 10 then "Benjamin"
when 11 then "Elijah"
when 12 then "Daniel"
when 13 then "Aiden"
when 14 then "Logan"
when 15 then "Matthew"
when 16 then "Lucas"
when 17 then "Jackson"
when 18 then "David"
when 19 then "Oliver"
when 20 then "Jayden"
when 21 then "Joseph"
when 22 then "Gabriel"
when 23 then "Samuel"
when 24 then "Carter"
when 25 then "Anthony"
when 26 then "John"
when 27 then "Dylan"
when 28 then "Luke"
when 29 then "Henry"
when 30 then "Andrew"
end

मेरे पास मजबूत संदेह है कि एक ही चीज़ लिखने का एक बहुत छोटा रास्ता है। के आकार में कुछ @name.case["Noah", "Liam"...]। यहां तक ​​कि LaTeX को इसे संभालने का एक बेहतर तरीका भी है।इस बात पर विचार करें कि मेरे कार्यक्रम में केस स्टेटमेंट्स की एक बहुत लंबी सूची होगी, इसलिए यदि मैं इसे छोड़ देता हूं तो यह काम कर सकता है, लेकिन यह बहुत लंबा और पढ़ना मुश्किल होगा। हालांकि मुझे ऐसा कुछ नहीं मिल रहा है।

क्या आपको पता है कि ऐसा कोई विकल्प है या नहीं?

उत्तर:

जवाब के लिए 2 № 1

यदि संख्यात्मक मूल्य @name लगातार शुरू होने वाले मूल्य हैं 0 (या 1), एक साधारण सरणी जिसमें सभी मान शामिल हैं पर्याप्त होना चाहिए:

@name = ["", "Noah", "Liam", "Mason", "Jacob", "William"][@name]

जितना चाहें उतने नाम डालने के लिए स्वतंत्र हो जाएं "William"

यदि चाबियाँ लगातार नहीं हैं या वे पूर्ण संख्या नहीं हैं तो ए Hash इसके बजाए इस्तेमाल किया जा सकता है:

 @name = { "1": "Noah", "three": "Mason", "5": "William" }[@name.to_s.to_sym]

जवाब के लिए 3 № 2

मान लीजिए कि आपकी अपनी सूची है names। आप एक हैश बना सकते हैं जो उन्हें पूर्णांक मैप करें

mapping = Hash[(1..names.size).zip(names)]

फिर एक फ़ंक्शन को कार्यान्वित करें जो एक नंबर दिया गया है और मैपिंग नियम किसी नाम या कुछ और लौटाते हैं

def id_to_name(id, mapping)
mapping.fetch(id, "no name")
end

आप इसके लिए एक कक्षा भी बना सकते हैं, इसलिए इस विधि को पैरामीटर के रूप में मैपिंग की आवश्यकता नहीं है

class IdToName
def initialize(names, fallback_name)
@mapping = Hash[(1..names.size).zip(names)]
@fallback_name = fallback_name
end

def get(id)
@mapping.fetch(id, @fallback_name)
end
end

id_to_name = IdToName.new(your_names, "no name")
puts id_to_name.get(1) # Noah
puts id_to_name.get(1000) # no name

जवाब के लिए 2 № 3

सबसे छोटा संभव तरीका है का उपयोग कर एक सरणी बनाना है %w अपर्याप्त विराम चिह्न को खत्म करने के लिए शॉर्टकट:

names = %w(Noah   Liam    Mason  Jacob  William Ethan James   Alexander Michael Benjamin
Elijah Daniel  Aiden  Logan  Matthew Lucas Jackson David     Oliver  Jayden
Joseph Gabriel Samuel Carter Anthony John  Dylan   Luke      Henry   Andrew)

आप लाइन ब्रेक, अतिरिक्त रिक्त स्थान इत्यादि जोड़ सकते हैं। फिर उन्हें @name का उपयोग करके इंडेक्स करें:

names[@name - 1]

के पहले तत्व के बाद से names 0 है, आपको एक से घटा देना है @name या शुरुआत में एक डमी तत्व डालें ताकि आप 1 से शुरू कर सकें।


संबंधित सवाल
सबसे लोकप्रिय