요약 - 안전한 계산기
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 47번째.
raise, 여러 개의 rescue 절, 그리고 ensure를 결합하여 잘못된 입력에도 중단되지 않는 작은 계산기를 만들어 보세요.
챌린지
중급다음과 같은 동작을 수행하는 calc(a, op, b) 메서드를 정의하세요:
op가+,-,*,/중 하나가 아니면"unknown operator"메시지와 함께ArgumentError를 발생시킵니다.- 그렇지 않으면 해당 연산을 수행합니다 (
/의 경우 정수 산술을 사용하세요).
그런 다음 입력에서 a, op, b 세 줄을 읽고, begin / rescue / ensure 블록 안에서 calc를 호출하세요:
- 성공 시,
<a> <op> <b> = <result>를 출력합니다. ArgumentError발생 시,Bad operator를 출력합니다.ZeroDivisionError발생 시,Cannot divide by zero를 출력합니다.ensure절에서는 항상--- end ---를 출력합니다.
a와 b를 파싱할 때는 동일한 begin 블록 내에서 Integer(...)를 사용하세요. 이렇게 하면 정수가 아닌 입력도 Bad operator로 처리됩니다 (ArgumentError가 두 경우를 모두 포함합니다).
입력이 6 / * / 7인 경우, 출력은 다음과 같습니다:
6 * 7 = 42
--- end ---입력이 10 / / / 0인 경우:
Cannot divide by zero
--- end ---직접 해보기
# TODO: calc(a, op, b)를 정의하고, 알 수 없는 op에 대해 ArgumentError를 발생시킵니다
raw_a = gets.chomp
op = gets.chomp
raw_b = gets.chomp
# TODO: 설명된 대로 begin/rescue/ensure를 사용하세요