الوصية

الوصية

تمرين تعلّمي

مقدمة

مساحات الأسماء

يُعد استخدام مساحات الأسماء أسلوبًا مهمًا لتنظيم الكود. توفر الأصناف والوحدات مساحات الأسماء. قد يحدث تضارب في التسمية بين طريقتين، ويمكن حله بوضعهما في مساحات أسماء مختلفة. يمكن أن تتداخل مساحات الأسماء، مما قد يساعد في هيكلة قواعد أكواد كبيرة. يتم الوصول إلى مساحات الأسماء عبر عامل تحديد النطاق ::.

يوضح المثال أدناه استخدام طريقتين مختلفتين باسم 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

التعليمات

أنت تعمل في مكتب محاماة مرموق متخصص في معالجة طلبات الوصايا الفريدة.

في هذا التمرين، ستفتح خزنة غامضة. أنت المنفّذ للتركة، وستجمع الأكواد السرية التي حفظتها ثلاث عائلات منذ زمن بعيد للحصول على رقم حساب والكود المطابق له.

ولمنع أي عائلة من فتح الخزنة بمفردها، لا يمكن فتحها إلا بدمج معرفتها مع مُعدِّل سري تعرفه أنت من الوصية الأخيرة.

لديك ثلاث مهام، وكلها تتعلق بمساعدة العائلات على فتح الخزنة.

1. اجلس أمام العائلات ورتّب أوراقك

عرّف فضاء أسماء باسم EstateExecutor. يجب تعريف الكود الوارد في المهام التالية داخل جسم فضاء الأسماء EstateExecutor.

class SomeName
  # The space between the class/module name
  # and the `end` keyword
  # is called body of the  namespace.
end

2. اعثر على رقم الحساب السري

هذه لحظتك الكبرى. أنت وحدك تملك مفتاح المُعدِّل السري الذي يكشف رقم الحساب السري.

عرّف الطريقة assemble_account_number(secret_modifier) التي تأخذ المُعدِّل السري من النوع Integer كوسيط، وتُرجع رقم الحساب المُجمَّع من النوع Integer.

للحصول على الرقم الصحيح، عليك جمع bank_number_part من كل عائلة من العائلات الثلاث.

3. الخطوة الأخيرة: أدخل الكود السري

تطلب منك التعليمات الواردة في الوصية أن تجمع كل الشُّذَر الزرقاء، ثم كل الشُّذَر الحمراء. ويُحصل على الكود الناتج بضرب المجموعين معًا.

عرّف الطريقة assemble_code التي تُرجع الكود الناتج بدمج الشُّذَر من العائلات الثلاث في نتيجة واحدة من النوع Integer. لا تأخذ هذه الطريقة أي وسائط، وتعتمد فقط على المعلومات الموجودة في فضاءات الأسماء ذات الصلة الخاصة بالعائلات.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Ruby Exercism

مستعد لبدء الوصية؟

سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.