Arrays में चर के संग्रह को प्रबंधित करने का एकमात्र तरीका नहीं है माणिक. चर का एक और प्रकार का संग्रह है हैश, जिसे एक सहयोगी सरणी भी कहा जाता है। एक हैश एक सरणी की तरह है जिसमें यह एक चर है जो अन्य चर को संग्रहीत करता है। हालांकि, एक हैश एक सरणी के विपरीत है जिसमें संग्रहीत चर किसी विशेष क्रम में संग्रहीत नहीं किए जाते हैं, और उन्हें संग्रह में उनकी स्थिति के बजाय एक कुंजी के साथ पुनर्प्राप्त किया जाता है।
कुंजी / मान जोड़े के साथ एक हैश बनाएं
एक हैश को स्टोर करने के लिए उपयोगी है जिसे कहा जाता है कुंजी / मूल्य जोड़े. एक कुंजी / मूल्य जोड़ी के पास यह पहचान करने के लिए एक पहचानकर्ता होता है कि आप किस हैश का उपयोग करना चाहते हैं तथा चर हैश में उस स्थिति में स्टोर करने के लिए। उदाहरण के लिए, एक शिक्षक एक हैश में एक छात्र के ग्रेड को स्टोर कर सकता है। बॉब का ग्रेड कुंजी "बॉब" द्वारा एक हैश में एक्सेस किया जाएगा और उस स्थान पर संग्रहीत चर बॉब का ग्रेड होगा।
एक हैश वैरिएबल को उसी तरह बनाया जा सकता है जैसे कि ऐरे वैरिएबल। सबसे आसान तरीका एक खाली हैश ऑब्जेक्ट बनाना और इसे कुंजी / मान जोड़े के साथ भरना है। ध्यान दें कि इंडेक्स ऑपरेटर का उपयोग किया जाता है, लेकिन छात्र का नाम एक नंबर के बजाय उपयोग किया जाता है।
याद रखें कि हैश अनियंत्रित हैं, जिसका अर्थ है कि कोई परिभाषित शुरुआत या अंत नहीं है क्योंकि एक सरणी में है। इसलिए, आप हैश में नहीं जा सकते। इंडेक्स ऑपरेटर का उपयोग करके मूल्यों को केवल हैश में डाला जाता है।
#! / usr / bin / env माणिक
ग्रेड = हैश.न्यू
ग्रेड ["बॉब"] = 82
ग्रेड ["जिम"] = 94
ग्रेड ["बिली"] = 58
ग्रेड डालता है ["जिम"]
हैश साहित्य
बस सरण की तरह, हैश के साथ हैश बनाया जा सकता है शाब्दिक। हैश शाब्दिक वर्ग कोष्ठक के बजाय घुंघराले ब्रेसिज़ का उपयोग करते हैं और प्रमुख मूल्य जोड़े इसमें शामिल होते हैं =>. उदाहरण के लिए, बॉब / 84 की एकल कुंजी / मान जोड़ी के साथ एक हैश इस तरह दिखेगा: {"बॉब" => 84}. अतिरिक्त प्रमुख / मूल्य जोड़े को हैश शाब्दिक रूप से अल्पविराम से अलग करके जोड़ा जा सकता है। निम्नलिखित उदाहरण में, कई छात्रों के लिए ग्रेड के साथ एक हैश बनाया गया है।
#! / usr / bin / env माणिक
ग्रेड = {"बॉब" => 82,
"जिम" => 94,
"बिली" => 58
}
ग्रेड डालता है ["जिम"]
हैश में वेरिएबल्स को एक्सेस करना
ऐसे समय हो सकते हैं जब आपको प्रत्येक चर को हैश में एक्सेस करना होगा। आप अभी भी हैश में चर पर पाश का उपयोग कर सकते हैं से प्रत्येक लूप, हालांकि यह उसी तरह काम नहीं करेगा जैसे कि से प्रत्येक सरणी चर के साथ लूप। क्योंकि एक हैश unordered है, जिसमें क्रम से प्रत्येक कुंजी / मूल्य जोड़े पर लूप समान नहीं हो सकता है जिस क्रम में आप उन्हें सम्मिलित करते हैं। इस उदाहरण में, ग्रेड के एक हैश को लूप किया जाएगा और मुद्रित किया जाएगा।
#! / usr / bin / env माणिक
ग्रेड = {"बॉब" => 82,
"जिम" => 94,
"बिली" => 58
}
grade.each do | नाम, ग्रेड |
"# {नाम}: # {ग्रेड}" डालता है
समाप्त