रेल में, आप hash.try(:[], :key)
कर सकते हैं जो hash
संभावित nil
पर मदद करता है। क्या []
के साथ नए रूबी 2.3 सुरक्षित नेविगेशन ऑपरेटर &.
का उपयोग करने के लिए कोई समतुल्य संस्करण है?रेल के बराबर सुरक्षित नेविगेशन हैश
उत्तर
&.
रेल 'try
के बराबर नहीं है, लेकिन आप हैश के लिए &.
उपयोग कर सकते हैं। बस इसका इस्तेमाल करें, कुछ खास नहीं।
hash[:key1]&.[](:key2)&.[](:key3)
हालांकि मैं ऐसा नहीं करता। एक निराला मामले में
Class Hash
def deep_fetch *args
x = self
args.each do |arg|
x = x[arg]
return nil if x.nil?
end
x
end
end
और फिर
response.deep_fetch 'PaReqCreationResponse', 'ThreeDSecureVERes', 'Message', 'VERes', 'CH', 'enrolled'
:
स्वीकृत जवाब जब hash
नहीं के बराबर है के लिए खाते में नहीं होगा ...
आप क्या आप .try
से पहले सुरक्षित एनएवी ऑपरेटर का उपयोग किया है और कहा कि
hash&.try(:[], :key)
काम करेंगे, लेकिन आप को फिर से लिखने कर सकते हैं भी उपयोग कर सकते हैं:
http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig
एक w ay आप
hash&.dig(:key1, :key2 ...)
जो शून्य वापस आ जाएगी यदि कोई कुंजी लाने मौजूद नहीं है एक हैश पर ऐसा कर सकता है ऐसा करने से है ...।
{ key1: { key2: 'info' } }
'जानकारी' वापसी होगी
{ key1: { wrong_key: 'info' } }
वापसी होगी nil
पूर्व रूबी 2.3
मैं आमतौर पर मेरी intializer में डाल की तरह कुछ था।
Retrieves:
समुदाय में आम सहमति से बचने के लिए दोनों की कोशिश और अकेला ऑपरेटर
&.
रूबी 2.3 और बाद में
Hash#dig
विधि नहीं है कि अब सिर्फ इतना है कि करता है करने के लिए हो रहा है प्रत्येक कुंजी ऑब्जेक्ट्स के साथ बार-बार मान ऑब्जेक्ट।
h = { foo: {bar: {baz: 1}}}
h.dig(:foo, :bar, :baz) #=> 1
h.dig(:foo, :zot) #=> nil
http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig
उपयोग मामलों में 'dig' के लिए संदिग्ध रूप से समान दिखता है, 2.3 में बस '&।' के रूप में पेश किया गया। कोई अंतर? –
वास्तव में, धन्यवाद! :) – bbozo
आईएमएचओ यह स्वीकार्य उत्तर होना चाहिए। –
जबकि hash&.[](:key)
प्रशिक्षित rubyist को सुरुचिपूर्ण है, मैं सिर्फ hash && hash[:key]
के रूप में यह बेहतर और अधिक सहज प्रोग्रामर मेरे बाद आने वाले है, जो के साथ के रूप में परिचित नहीं हो सकता है के लिए पढ़ता है का उपयोग करेंगे रूबी की जटिलताओं। कोडबेस में कुछ अतिरिक्त वर्ण कभी-कभी किसी और के लिए गुगलिंग को पूरा कर सकते हैं।
(संदर्भ आप का उपयोग करने के लिए इस में, एक सशर्त बयान में है निश्चित रूप से चाहते हैं को देखते हुए।)
- 1. सुरक्षित नेविगेशन ऑपरेटर (&।) Nil
- 2. रेल: हैश
- 3. धागा सुरक्षित हैश मानचित्र?
- 4. रेल 4 के बराबर रेल 3 'मॉडल.ल'
- 5. रेल - वर्णानुक्रमिक अंकन/नेविगेशन
- 6. सरल (कोड के लिए) सुरक्षित हैश फंक्शन
- 7. php die() के बराबर रेल?
- 8. रेल - ऑब्जेक्ट हैश
- 9. रेल प्रति अनुरोध हैश?
- 10. टाइप-सुरक्षित मैक्रो के बराबर है?
- 11. हैश-कुंजी नेविगेशन को कैसे कार्यान्वित करें?
- 12. रेल- रीडायरेक्ट करने के लिए हैश को
- 13. रेल के लिए JSON स्ट्रिंग हैश
- 14. कोर php में Laravel हैश बराबर
- 15. अमरूद बनाम अपाचे कॉमन्स हैश/बराबर बिल्डर्स
- 16. रेल 4: जमे हुए हैश
- 17. रेल: क्या मज़ेदार मणि सुरक्षित है?
- 18. क्या रूबी/रेल के बराबर ++ है?
- 19. रेल 2.3.x बराबर पैरामीटर
- 20. पाइथन के समय के बराबर थ्रेड-सुरक्षित .स्ट्रिप्टाइम()?
- 21. एक हैश मैप थ्रेड-सुरक्षित विभिन्न चाबियों के लिए है?
- 22. क्या यह पासवर्ड हैश के लिए एक सुरक्षित तरीका है?
- 23. छोटे (<10 अंक) बनाने के विचार, (बहुत) सुरक्षित "हैश"
- 24. क्या std :: बराबर के लिए कोई सुरक्षित विकल्प है?
- 25. रेल 4 मजबूत पैरामीटर - मॉडल पैरामीटर हैश
- 26. रेल में पैराम हैश को संशोधित करना
- 27. Convert एक्सएमएल स्ट्रिंग रेल में हैश को
- 28. रेल सत्र डेटा - एक हैश में स्टोर
- 29. आरएसपीईसी: प्रतीक हैश के साथ हैश के खिलाफ स्ट्रिंग कुंजियों के साथ हैश की तुलना करना?
- 30. रूबी/रेल में PHP के print_r के बराबर है?
की संभावित डुप्लिकेट [रूबी - प्रवेश बहुआयामी हैश और से बचने के लिए उपयोग नहीं के बराबर वस्तु] (https://stackoverflow.com/प्रश्न/10130726/रूबी-एक्सेस-बहु-आयामी-हैश-एंड-टावर-एक्सेस-शून्य-ऑब्जेक्ट) – kolen