تا اینجا همهی تمرینهایی که دیدهاید از کلاس استفاده کردهاند.
گاهی نیازی به سربار ساختن یک شیء دارای وضعیت نداریم، بنابراین بهجای آن از 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 است.