到目前為止,你看過的練習都使用了類別。
有時我們不需要承擔建立帶有狀態的物件所需的額外開銷,因此改用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美元:0.5%。1000美元且小於5000美元:1.621%。5000美元:2.475%。你有三個任務,每個任務都會處理餘額和它的利率。
實作 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 的實例。