रूबी निरुपित सच और गलत तार?
क्या आप स्ट्रिंग्स को सच और झूठ को सौंपने में सक्षम हैं?
उदाहरण के लिए मैं एक हैश के साथ शुरू कर रहा हूं:
shopping_list = {
"milk" => false,
"eggs" => false,
"jalapenos" => true
}
puts "Here is your Shopping List:"
shopping_list.each do |key, value|
puts "#{key} - #{value}"
end
मैं आउटपुट को "खरीदे" के लिए trueऔर "खरीदे नहीं " के लिए रख रहा था false।
जवाब
एक इनलाइन if या एक का उपयोग करें ternary if operator:
shopping_list = {
"milk" => false,
"eggs" => false,
"jalapenos" => true
}
puts "Here is your Shopping List:"
shopping_list.each do |key, value|
puts "#{key} - #{if value then 'purchased' else 'not purchased' end}"
# or this:
# puts "#{key} - #{value ? 'purchased' : 'not purchased'}"
end
प्रिंट:
Here is your Shopping List:
milk - not purchased
eggs - not purchased
jalapenos - purchased
किस ऑपरेटर का उपयोग करना है: टर्नरी ऑपरेटर ( ?:) या if/then/else/end?
मैंने यहां चुना if/then/else/end, लेकिन स्वीकार्य के रूप में दोनों विकल्पों को सूचीबद्ध किया। यह शैली का विषय है जिसे आप चुनते हैं।
कुछ स्टैक ओवरफ्लो रूबी उपयोगकर्ता एक नियमित उपयोग करना पसंद करते हैं if ... then ... else ... end। यह लंबा है, लेकिन अधिक स्पष्ट और अधिक मुहावरेदार है। उदाहरण के लिए, ये उत्तर देखें:
https://stackoverflow.com/a/2175392/967621
https://stackoverflow.com/a/4253250/967621
अन्य स्टैक ओवरफ्लो उपयोगकर्ता पसंद करते हैं ?:, जो अधिक संक्षिप्त और स्पष्ट है, यदि आप इसका उपयोग करते हैं। यह भी ध्यान दें कि रूबी स्टाइल गाइड इससे सहमत है:
निर्माणों
?:पर टर्नरी ऑपरेटर ( ) को प्राथमिकता देंif/then/else/end। यह अधिक सामान्य और स्पष्ट रूप से अधिक संक्षिप्त है।
# bad
result = if some_condition then something else something_else end
# good
result = some_condition ? something : something_else
क्या यह आपके प्रश्न का उत्तर देता है?
shopping_list.each do |key, value|
puts "#{key} - #{purchased?(value)}"
end
def purchased?(boolean)
boolean ? 'purchased' : 'not purchased'
end
मैं आउटपुट को सच के लिए "खरीदा" डालता था और झूठे के लिए "खरीदा नहीं" चाहता था।
आप आमतौर पर एक ifअभिव्यक्ति के साथ शुरू करेंगे :
shopping_list.each do |key, value|
if value
puts "#{key} - purchased"
else
puts "#{key} - not purchased"
end
end
बाद में, आप डुप्लिकेट कोड भागों को हटाने का प्रयास कर सकते हैं।
क्या आप स्ट्रिंग्स को सच और झूठ को सौंपने में सक्षम हैं?
यह एक मैपिंग की तरह लगता है। आप एक और हैश का उपयोग कर सकते हैं:
states = {
true => 'purchased',
false => 'not purchased'
}
और अपनी खरीदारी की सूची प्रिंट करते समय उस हैश का संदर्भ लें:
shopping_list.each do |key, value|
puts "#{key} - #{states[value]}"
end
यहाँ, हैश से states[value]आउटपुट वैल्यू प्राप्त करता है ।valuestates