ट्रैक
/
Ruby
Ruby
/
अभ्यास
/
अंतिम वसीयत
अंतिम वसीयत

अंतिम वसीयत

सीखने का अभ्यास

परिचय

कोड को व्यवस्थित करने का एक अहम तरीका नेमस्पेस का इस्तेमाल है। क्लास और मॉड्यूल नेमस्पेस देते हैं। दो मेथड के नाम आपस में टकरा सकते हैं, और इन्हें अलग-अलग नेमस्पेस में रखकर यह टकराव दूर किया जा सकता है। नेमस्पेस को एक के अंदर एक रखा जा सकता है, जिससे बड़े कोड बेस व्यवस्थित करने में मदद मिल सकती है। नेमस्पेस तक पहुँचने के लिए स्कोप-रेज़ोल्यूशन ऑपरेटर :: का इस्तेमाल किया जाता है।

नीचे दिया गया उदाहरण दो अलग-अलग 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 परिणाम बनाता है और वही कोड लौटाता है। इस मेथड में कोई आर्गुमेंट नहीं होता और यह पूरी तरह उन परिवारों के संबंधित नेमस्पेस में मौजूद जानकारी पर निर्भर करता है।

बनाने वाले

  • @vaeng (मूल C++ अभ्यास)
  • @vaiapatta1985 (Ruby में रूपांतरण)
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Ruby Exercism

अंतिम वसीयत शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।