요약 - 안전한 계산기
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 48번째.
챌린지
중급잘못된 입력에 대해 안전하게 작동하는 작은 계산기를 만드세요.
parse, divideByZero, unknownOp 케이스를 가진 CalcError: Error를 정의하세요.
다음과 같은 동작을 하는 던지기 함수(throwing function) compute(_ a: String, _ op: String, _ b: String) throws -> Int를 정의하세요:
a와b를 정수로 파싱하며, 실패할 경우.parse를 던집니다.op가+,-,*,/중 하나가 아닐 때.unknownOp를 던집니다.op == "/"이고b == 0일 때.divideByZero를 던집니다.- 그 외의 경우에는 정수 결과값을 반환합니다.
입력으로 한 줄을 읽습니다: 쉼표로 구분된 a:op:b 형식의 표현식 리스트입니다. 각 표현식을 do/catch를 사용하여 순서대로 처리하세요. 표현식당 한 줄씩 출력합니다:
- 성공 시:
= <n> - 각 에러 케이스에 대해:
parse error,div by zero, 또는unknown op
표현식별 출력 라인 다음에, 성공한 표현식의 개수를 포함한 요약 라인 하나를 출력합니다: OK: <n>
입력이 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4인 경우, 출력은 다음과 같습니다:
= 8
div by zero
parse error
unknown op
= 8
OK: 2직접 해보기
let exprs = readLine()!.components(separatedBy: ",")
// TODO: enum CalcError; func compute(...) throws -> Int;
// 루프, do/try, 표현식별 결과 출력; 마지막에 'OK: <n>' 출력