지금까지 봐 온 모든 연습 문제는 클래스를 사용했어요.
때로는 상태를 가진 객체를 만드는 오버헤드가 필요하지 않아서, 대신 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 이상의 경우에는 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의 인스턴스라는 점에 주의해요.
Exercism에 가입하고 Ruby 트랙을 개념 21개연습 문제 121개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.