So far all the exercises you have seen have used classes.
Sometimes we do not need the overhead of creating an object with state, so instead we use module
.
A module is very similar to a class (in fact, Module
is Class
' parent in the object hierarchy) - the main difference being that rather than using instance methods, we use class methods.
Class methods start with self.
and are directly called on a module.
For example:
module Speaker
def self.echo(something)
"#{something} ... #{something}"
end
end
Speaker.echo("Hello") #=> "Hello ... Hello"
There are several ways to write loops in Ruby, but as we tend to use enumeration rather than looping in general, the most commonly seen loop perhaps is the while
loop:
counter = 0
while counter < 5
counter += 1
end
You can also use its sibling until
counter = 0
until counter == 5
counter += 1
end
In this exercise you will be working with savings accounts. Each year, the balance of a savings account is updated based on the interest rate. The interest rate the bank gives depends on the amount of money in the accounts (its balance):
1000
dollars.1000
dollars and less than 5000
dollars.5000
dollars.You have three tasks, each of which will deal with the balance and its interest rate.
Implement the SavingsAccount.interest_rate
method to calculate the interest rate based on the specified balance:
SavingsAccount.interest_rate(200.75)
#=> 0.5
Note that the value returned is an instance of Float
.
Implement the SavingsAccount.annual_balance_update
method to calculate the annual balance update, taking into account the interest rate:
SavingsAccount.annual_balance_update(200.75)
#=> 201.75375
Note that the value returned is an instance of Float
.
Implement the SavingsAccount.years_before_desired_balance
method to calculate the minimum number of years required to reach the desired balance:
SavingsAccount.years_before_desired_balance(200.75, 214.88)
#=> 14
Note that the value returned is an instance of Integer
.
Sign up to Exercism to learn and master Ruby with 20 concepts, 120 exercises, and real human mentoring, all for free.