यहाँ माणिक में हैश autovivification सक्षम करने के लिए एक चतुर चाल (पहलुओं से लिया गया) है:माणिक हैश autovivification (पहलुओं)
# File lib/core/facets/hash/autonew.rb, line 19
def self.autonew(*args)
leet = lambda { |hsh, key| hsh[key] = new(&leet) }
new(*args,&leet)
end
हालांकि यह (बेशक) काम करता है, मैं यह वास्तव में निराशा होती है कि लगता है मैं कर सकते हैं ' यह पता लगाने के लिए कि यह दो लाइनर यह करता है कि यह क्या करता है।
लीट को डिफ़ॉल्ट मान के रूप में रखा जाता है। तो उसके बाद h['new_key']
तक पहुंचने से यह किसी भी तरह से इसे लाता है और 'new_key' => {}
अब, मैं h['new_key']
की समीक्षा करने के विपरीत डिफ़ॉल्ट मान ऑब्जेक्ट को वापस करने की अपेक्षा करता हूं। यही है, 'new_key' => {}
स्वचालित रूप से नहीं बनाया गया है। तो लीट वास्तव में कैसे बुलाया जाता है? विशेष रूप से दो मानकों के साथ?
उत्कृष्ट उत्तर। – Pesto
वास्तव में यह है। यह, विशेष रूप से, मुझे कभी भी रूबीबुक (मानक रूबी विंडोज वितरण के साथ आता है) का संदर्भ नहीं देगा, क्योंकि यह ब्लॉक और नए के बारे में छोटे अप्रासंगिक तथ्य का उल्लेख करने में असफल रहा। – artemave