कोड को व्यवस्थित करने का एक अहम तरीका नेमस्पेस का इस्तेमाल है।
क्लास और मॉड्यूल नेमस्पेस देते हैं।
दो मेथड के नाम आपस में टकरा सकते हैं, और इन्हें अलग-अलग नेमस्पेस में रखकर यह टकराव दूर किया जा सकता है।
नेमस्पेस को एक के अंदर एक रखा जा सकता है, जिससे बड़े कोड बेस व्यवस्थित करने में मदद मिल सकती है।
नेमस्पेस तक पहुँचने के लिए स्कोप-रेज़ोल्यूशन ऑपरेटर :: का इस्तेमाल किया जाता है।
नीचे दिया गया उदाहरण दो अलग-अलग foo मेथड का इस्तेमाल दिखाता है।
इन्हें साथ में इस्तेमाल करने के लिए इनके अपने-अपने नेमस्पेस आगे लगाए जाते हैं।
class MyNamespace
def self.foo
44
end
class MyInnerNamespace
def self.baz
90
end
end
end
class MyOtherNamespace
def self.foo
-2
end
end
p MyNamespace::foo + MyOtherNamespace::foo * MyNamespace::MyInnerNamespace::baz # => -136
ध्यान दीजिए कि नेमस्पेस इस बात पर निर्भर करते हैं कि जो कोड चल रहा है वह कहाँ है।
रूट नेमस्पेस की किसी चीज़ को संदर्भित करने के लिए (यानी सभी तय किए गए नेमस्पेस के बाहर की चीज़ के लिए) शुरू में :: लगाइए।
उदाहरण के लिए:
class Example
def self.example
5
end
end
class MyNamespace
class Example
def self.example
10
end
end
def self.call_example
p Example::example # => 10
p ::Example::example # => 5
end
end
आप एक प्रतिष्ठित लॉ फर्म में काम करते हैं, जो अनोखी वसीयत संबंधी माँगों को संभालने में माहिर है।
इस अभ्यास में आप एक रहस्यमयी तिजोरी खोलने वाले हैं। आप संपत्ति के निष्पादक हैं और तीन परिवारों के बहुत समय से छिपाकर रखे गए गुप्त कोड जोड़कर एक अकाउंट नंबर और उससे मेल खाता कोड निकालेंगे।
तिजोरी कोई भी परिवार अकेले न खोल सके, इसलिए उसे खोलने के लिए उनका ज्ञान उस गुप्त मॉडिफायर के साथ मिलाना ज़रूरी है, जो आपको अंतिम वसीयत से पता है।
आपके पास तीन काम हैं, और तीनों परिवारों को तिजोरी खोलने में मदद करने से जुड़े हैं।
EstateExecutor नाम का एक नेमस्पेस बनाइए।
अगले कामों का कोड EstateExecutor नेमस्पेस के अंदर बनाया जाना चाहिए।
class SomeName
# The space between the class/module name
# and the `end` keyword
# is called body of the namespace.
end
यह आपका बड़ा मौका है। गुप्त अकाउंट नंबर सामने लाने की गुप्त मॉडिफायर चाबी सिर्फ आपके पास है।
assemble_account_number(secret_modifier) मेथड बनाइए, जो आर्गुमेंट के तौर पर Integer गुप्त मॉडिफायर लेता है और जोड़कर तैयार किया गया अकाउंट नंबर Integer के रूप में लौटाता है।
सही नंबर पाने के लिए आपको तीनों परिवारों के bank_number_part को जोड़ना होगा।
वसीयत में लिखे निर्देश कहते हैं कि पहले सारे नीले टुकड़े और फिर सारे लाल टुकड़े जोड़िए। इससे जो कोड बनता है, वह दोनों जोड़ों को गुणा करने पर मिलता है।
assemble_code मेथड बनाइए, जो तीनों परिवारों के टुकड़ों को मिलाकर एक ही Integer परिणाम बनाता है और वही कोड लौटाता है।
इस मेथड में कोई आर्गुमेंट नहीं होता और यह पूरी तरह उन परिवारों के संबंधित नेमस्पेस में मौजूद जानकारी पर निर्भर करता है।
Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।