कोई भी मुझे जांचने का एक रूबी तरीका दिखा सकता है कि क्या हैश में कोई कुंजी मौजूद है और यदि यह नहीं है तो यह डिफ़ॉल्ट मान दें। मुझे लगता है कि ऐसा करने के लिए एक लाइनर है, लेकिन मुझे यकीन नहीं है कि इसका उपयोग कैसे किया जाए।यदि कुंजी मौजूद नहीं है तो डिफ़ॉल्ट मान
उत्तर
आप Hash#fetch
विधि का उपयोग कर सकते हैं हैश में उस डिफ़ॉल्ट मान संग्रहीत करने के लिए की जरूरत नहीं है:
hash = {}
hash.fetch(:some_key, 'default-value') # => 'default-value'
p hash
# => {}
आप इसके अलावा में की जरूरत है अपने डिफ़ॉल्ट मान आप का उपयोग न के बराबर कुंजी हर बार स्टोर करने के लिए और आप
hash = Hash.new { |hash, key| hash[key] = 'default-value' }
hash[:a] = 'foo'
p hash[:b]
# => 'default-value'
p hash
# => { :a => 'foo', :b => 'default-value' }
हैश वर्ग के निर्माता एक डिफ़ॉल्ट मान, एक ही है, तो मिलान कुंजी नहीं मिला है लौटा दी जाएगी स्वीकार करते हैं: 'एक हैश आप एक ब्लॉक के साथ Hash#new
का उपयोग कर ऐसा कर सकते हैं आरंभ कर रहे हैं।
h = Hash.new("default")
h.has_key?("jake")
=> false
h["jake"]
=> "default"
h["jake"] = "26"
h.has_key?("jake")
=> true
आप पहले से ही एक हैश है, तो आप ऐसा कर सकते हैं:
h.fetch(key, "default value")
या आप तथ्य यह है कि एक गैर-मौजूद कुंजी वापस आ जाएगी nil
शोषण:
h[key] || "default value"
बनाने के लिए डिफ़ॉल्ट मानों के साथ हैश यह निर्भर करता है कि आप वास्तव में क्या करना चाहते हैं।
कुंजी के स्वतंत्र और संग्रहीत नहीं किया जाएगा:
h = Hash.new("foo") h[1] #=> "foo" h #=> {}
कुंजी पर निर्भर और संग्रहीत किया जाएगा:
h = Hash.new { |h, k| h[k] = k * k } h[2] #=> 4 h #=> {2=>4}
आप एक डिफ़ॉल्ट मान भंडारण कर रहे हैं यह शून्य हो सकता है और आपको इसे संग्रहण समय पर गणना करने की आवश्यकता है:
hash = {}
...
hash.fetch(key) {|k| hash[k] = calc_default()}
आप अगर कुंजी (अभी तक) मौजूद नहीं है हैश करने के लिए डिफ़ॉल्ट मान देना चाहते हैं, तो आप ||=
ऑपरेटर, यानी उपयोग कर सकते हैं:
h = {some_key: 'non_default_value'}
value = h[:some_key] ||= 'default_value'
value2 = h[:non_existing_key] ||= 'default_value'
value
'non_default_value'
और value2
आवंटित किया जाएगा होगा
'default_value'
सौंपा जा इन असाइनमेंट के बाद h
non_existing_key
सेट 'default_value'
करना होगा
{:some_key=>"non_default_value", :non_existing_key=>"default_value"}
- 1. एक्सएसएलटी: यदि टैग मौजूद है, तो टेम्पलेट लागू करें; यदि नहीं, तो स्थिर मान चुनें
- 2. वर्ग - यदि मौजूद नहीं है तो
- 3. MySQL: यदि मान मौजूद है तो अपडेट करें INSERT
- 4. यदि रिकॉर्ड मौजूद है, तो
- 5. डालें यदि मौजूद नहीं है तो बस mysql
- 6. एक्सएसएलटी डिफ़ॉल्ट वैरिएबल वैल्यू यदि मूल्य मौजूद नहीं है
- 7. jQuery: जांच करें कि मान सरणी में है, यदि ऐसा है, तो हटाएं, यदि नहीं, तो
- 8. चेक करें कि कुंजीपटल में कुंजी मौजूद है या नहीं। यदि नहीं, तो इसे
- 9. यदि कोई डिफ़ॉल्ट मान प्रदान नहीं किया गया है तो फ़ील्ड के लिए डिफ़ॉल्ट मान क्या है?
- 10. जावास्क्रिप्ट: यदि सरणी मौजूद है, तो जांचें,
- 11. यदि स्थिति मौजूद है तो MySQL ट्रिगर
- 12. यदि मॉडलस्टेट में कोई कुंजी मौजूद नहीं है, तो मैं इसे कैसे जोड़ सकता हूं? aspnetmvc1
- 13. बनाएँ यदि मौजूद नहीं है
- 14. यदि बच्चा मौजूद नहीं है तो माता-पिता रिकॉर्ड हटाएं
- 15. पोस्टग्रेज़: यदि यह पहले से मौजूद नहीं है तो
- 16. सम्मिलित डिफ़ॉल्ट यदि मान रिक्त है
- 17. यदि इनपुट मान रिक्त है, तो जावास्क्रिप्ट
- 18. Bundle.getString (स्ट्रिंग कुंजी) पर डिफ़ॉल्ट मान
- 19. अगर रजिस्ट्री प्रविष्टि मौजूद है तो ऐसा करें, यदि ऐसा नहीं है, तो
- 20. यदि आवश्यक फ्लैग मौजूद नहीं हैं तो संकलित विफल
- 21. तो स्ट्रिंग खाली है तो कुछ डिफ़ॉल्ट मान
- 22. यदि सेवा मौजूद है
- 23. यदि सत्र मौजूद है या नहीं
- 24. कैसे जांचें यदि ** kwargs में कोई कुंजी मौजूद है?
- 25. mysql सशर्त डालने - यदि मौजूद नहीं है
- 26. डालने का सबसे तेज़ तरीका, यदि मौजूद नहीं है, तो MySQL
- 27. अस्तित्व की जांच करना और यदि मौजूद है, तो एक निश्चित मान
- 28. SQLAlchemy अद्यतन करता है, तो अद्वितीय कुंजी मौजूद है
- 29. यदि मौजूद है या मौजूद है?
- 30. यदि मौजूद है तो फ़ाइल में जोड़ें और
एच [कुंजी] का उपयोग || "डिफ़ॉल्ट मान" सहेजा नहीं जाता है, अगर वहां पहले से ही झूठा है तो इसे – Sebastian
ओवरराइड किया जाएगा इसलिए मैंने इसे कई संभावनाओं में से एक के रूप में सूचीबद्ध किया है। आम तौर पर लोगों को यह पता होता है कि उनके हैंश के मूल्य कैसा रहेगा, अगर आपको पता है कि आप बुलियन मूल्यों को नहीं बचा रहे हैं, तो यह एक बिल्कुल सही दृष्टिकोण है। –