के इस उदाहरण लेते हैं:रुबी 1.9 में ऑर्डर किए गए हैश का केवल एक सबसेट कैसे प्राप्त करें?
d = {"a" => 1, "b" => 2, "c" => 3, "d" => 4}
के बाद से हैश अब आदेश दिया जाता है, मैं a
से b
करने के लिए या c
से d
लिए डेटा प्राप्त करना चाहते हो सकता है। समस्या यह है कि मैं d[0..1]
या d[2..3]
नहीं कर सकता।
मैं तथापि कर सकता है:
irb > d.to_a[0..1]
=> [["a", 1], ["b", 2]]
... लेकिन यह गन्दा लगता है और मैं इस तरह के ऑपरेशन के लिए मेरे हैश कास्ट करने के लिए नहीं करना चाहती।
क्या इसे संभालने के लिए कोई क्लीनर समाधान है?
# Holy Grail
irb > d[0..1]
=> {"a" => 1, "b" => 2}
मैं देख सकता हूँ अपने आप को इस तरह के एक विधि कार्यक्रम के लिए कैसे, लेकिन वहाँ कुछ देशी पहले से ही किया है कि मैं इस्तेमाल कर सकते हैं हो सकता है ...?
एक सीमा भी, एक वैध हैश कुंजी हो सकता है तो आप इस के लिए एक कस्टम विधि का उपयोग करना होगा। मुझे नहीं लगता कि अंतर्निहित कुछ भी नहीं है, बीटीडब्ल्यू। – tokland