حتى الآن، استخدمت جميع التمارين التي رأيتها أصنافًا. أحيانًا لا نحتاج إلى العبء الإضافي لإنشاء كائن يحمل حالة، لذا نستخدم بدلًا من ذلك module.
الوحدة شبيهة جدًا بالصنف، بل إن Module هو الصنف الأب لـ Class في التسلسل الهرمي للكائنات، والفرق الأساسي أنها تستخدم طرق الأصناف بدلًا من طرق الكائنات. تبدأ طرق الأصناف بـ self. وتُستدعى مباشرةً على الوحدة.
على سبيل المثال:
module Speaker
def self.echo(something)
"#{something} ... #{something}"
end
end
Speaker.echo("Hello") #=> "Hello ... Hello"
توجد عدة أساليب لكتابة الحلقات في Ruby، لكن بما أننا نميل عمومًا إلى استخدام التعداد بدلًا من الحلقات، فربما تكون الحلقة الأكثر شيوعًا هي حلقة while:
counter = 0
while counter < 5
counter += 1
end
يمكنك أيضًا استخدام نظيرتها until
counter = 0
until counter == 5
counter += 1
end
في هذا التمرين ستتعامل مع حسابات التوفير. كل عام، يُحدَّث رصيد حساب التوفير بناءً على سعر الفائدة. ويعتمد سعر الفائدة الذي يمنحه البنك على مقدار المال الموجود في الحساب (أي رصيده):
1000 دولار.1000 دولار وأقل من 5000 دولار.5000 دولار.لديك ثلاث مهام، وكل مهمة تتعامل مع الرصيد وسعر الفائدة الخاص به.
نفّذ الطريقة SavingsAccount.interest_rate لحساب سعر الفائدة بناءً على الرصيد المحدد:
SavingsAccount.interest_rate(200.75)
#=> 0.5
لاحظ أن القيمة المُرجَعة هي كائن من الصنف Float.
نفّذ الطريقة SavingsAccount.annual_balance_update لحساب التحديث السنوي للرصيد، مع مراعاة سعر الفائدة:
SavingsAccount.annual_balance_update(200.75)
#=> 201.75375
لاحظ أن القيمة المُرجَعة هي كائن من الصنف Float.
نفّذ الطريقة SavingsAccount.years_before_desired_balance لحساب الحد الأدنى من السنوات اللازمة للوصول إلى الرصيد المطلوب:
SavingsAccount.years_before_desired_balance(200.75, 214.88)
#=> 14
لاحظ أن القيمة المُرجَعة هي كائن من الصنف Integer.
سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.