/ / रूबी में रूचि समझाओ - रूबी-ऑन-रेल, रूबी

रुबी में रूचि समझाते हुए - रूबी-ऑन-रेल, रूबी

मैं एक पुस्तक क्राफ्टिंग रेल अनुप्रयोगों को पढ़ रहा हूंजोस वालिम और कुछ ऐसा हुआ है जिसे मैं समझ नहीं पा रहा हूं। मैं सोच रहा हूं कि कोई व्यक्ति नीचे तीन प्रकार के हैश के बीच सादे अंग्रेजी में अंतर को समझा सकता है।

  1. उदाहरण के लिए, नेस्टेड हैश (जैसा कि इस उदाहरण में इसका प्रतिनिधित्व किया गया है) में एक नेस्टेड हैश है। अन्य संदर्भों में, मैं नेस्टेड हैश समझता हूं, लेकिन इसे यहां नहीं मिला।

  2. दूसरे उदाहरण में "सरणी" एक "कुंजी" किस तरह से है। मेरे लिए यह चार चर के साथ एक सरणी की तरह दिखता है।

  3. तीसरा उदाहरण हैश "कुंजी के रूप में हैश" के साथ हैश।

    @cached [कुंजी] [उपसर्ग] [नाम] [आंशिक]

    कुंजी के रूप में सरणी के साथ सरल हैश

    @cached [[कुंजी, उपसर्ग, नाम, आंशिक]]

    कुंजी के रूप में हैश के साथ सरल हैश

    @cached [: key => कुंजी,: उपसर्ग => उपसर्ग,: नाम => नाम,: आंशिक => आंशिक]

उत्तर:

उत्तर № 1 के लिए 6

नेस्टेड हैश, अच्छी तरह से, एक घोंसला हैश है। उदाहरण दिया गया है, @cached[key][prefix][name][partial], आपको एक विशेष मूल्य के लिए "पथ" दिखा रहा है, इसलिए इस मामले में हैश इस तरह कुछ दिख सकता है:

@cache = {
key => {
prefix => {
name => {
partial => "value"
}
}
}
}

सर के साथ एक सरणी के साथ सरल हैश के लिए, वे हैश में कुंजी में से एक के रूप में उस 4-तत्व सरणी का उपयोग कर रहे हैं।

@cache = {
[key, prefix, name, partial] => "value",
another_key => "another value"
}

हैश के साथ एक हैश के साथ सरल हैश के लिए, वे "हैश का उपयोग कर रहे हैं (ध्यान दें कि हैश के लिए {}" वैकल्पिक हैं, जो कुछ भ्रम पैदा कर सकता है) हैश में कुंजियों में से एक के रूप में।

@cache = {
{:key => key, :prefix => prefix, :name => name, :partial => partial} => "value",
another_key => "another value"
}

उम्मीद है की वो मदद करदे!


जवाब के लिए 2 № 2

एक हैश बस सहयोगी है कुंजी वस्तुओं के लिए मूल्य वस्तुओं। चाबियाँ और मूल्य कुछ भी हो सकते हैं।

यदि एक मूल्य ऑब्जेक्ट स्वयं ही हैश है, आप इसे "नेस्टेड हैश" कह सकते हैं क्योंकि कुछ अर्थ में यह मुख्य हैश के अंदर है।

यदि एक कुंजी ऑब्जेक्ट एक सरणी है, फिर आपको "कुंजी के रूप में सरणी के साथ हैश" मिलता है।

यदि एक कुंजी ऑब्जेक्ट स्वयं ही हैश है, फिर आपको "हैश के साथ हैश के रूप में" मिलता है।

इन विभिन्न मामलों के एक अच्छे दृश्य प्रतिनिधित्व के लिए amfeng का जवाब देखें।

जब आप उन्हें देखते हैं तो आपको विभिन्न मामलों की पहचान करने के लिए रूबी सिंटैक्स से कुछ हद तक परिचित होना होगा।

उदाहरण के लिए, समझने के लिए @cached[[key, prefix, name, partial]] आपको यह जानने की ज़रूरत है [key, prefix, name, partial] एक सरणी का प्रतिनिधित्व करता है, तो आपके पास क्या है @cached[array], जिसका अर्थ है कि एक सरणी को एक कुंजी के रूप में उपयोग किया जा रहा है।

जब आप कुछ ऐसा देखते हैं @cached[key][prefix] आपको पता होना चाहिए कि यह बराबर है (@cached[key])[prefix] तो मूल्य वस्तु (@cached[key]) कुछ प्रकार की वस्तु है जो प्रतिक्रिया देती है [] तरीका। इस मामले में, यह एक घोंसला हैश है क्योंकि लेखक ने आपको ऐसा बताया है, लेकिन यदि आप उस संदर्भ को नहीं जानते हैं तो इसके लिए कुछ और होना संभव है।

जब आप कुछ ऐसा देखते हैं @cached[:key => key, :prefix => prefix, :name => name, :partial => partial] आपको इसके बराबर पता होना चाहिए @cached[{:key => key, :prefix => prefix, :name => name, :partial => partial}], जिसका मतलब है कि हम एक कुंजी के रूप में हैश के रूप में उपयोग कर रहे हैं।