a day ago
- 作者在Rust中实现了一个逆波兰表示法(RPN)计算器,并解释了基于栈的求值过程。
- 初始代码使用命令行参数、parse/match和unwrap()进行错误处理,通过直接使用迭代器并跳过程序名进行了改进。
- 讨论了Rust的collect()方法、类型推断和turbofish语法。
- 令牌解析通过尝试解析为i64进行;如果失败,则检查令牌是否为运算符。
- 错误处理通过用if let模式和元组赋值替换unwrap()进行优化,最终从泛型math_op函数返回Result。
- 最终代码使用闭包(FnOnce)传递运算符逻辑,从而得到更简洁且具有正确错误传播的代码。
- 文章最后提到了将中缀表达式转换为后缀表达式的调度场算法(Shunting-yard algorithm)。