回顾:安全计算器
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 48 课,共 56 课。
挑战
中等构建一个能安全处理无效输入的小型计算器。
定义 CalcError: Error,包含以下情况:parse、divideByZero、unknownOp。
定义一个会抛出异常的函数 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;
// 循环处理每个 expr,用 do/try 和 print 输出结果;最后用 print 输出 'OK: <n>'
逻辑与流程中的所有课
自己练习: Swift 在线编辑器