在将infix表达式转换为后缀表达式的上下文中,使用分流码算法。我想使用向量来存储输出,这将同时存储运算符和数字类型的数据。
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Operator {
Add,
Sub,
Mul,
Div,
}
fn main() {
let mut output: Vec<String> = Vec::new(); // create an output vector
let a = 2;
let b = Operator::Add;
let c = 3;
output.push(a.to_string());
output.push(b.to_string());
output.push(c.to_string());
}上面的代码当然不会编译,因为to_string()方法不是为Operator定义的。我看到了两种解决方法:
to_string()方法Operator的引用。我认为第二个是首选的选择,虽然我不知道创建一个引用向量是否会带来很多复杂性。
发布于 2016-11-12 08:17:44
没有必要使用引用;只需将数字和Operators直接存储在枚举中:
enum Thing {
Op(Operator),
Number(i32),
}
fn main() {
let mut output: Vec<Thing> = Vec::new();
let a = 2;
let b = Operator::Add;
let c = 3;
output.push(Thing::Number(a));
output.push(Thing::Op(b));
output.push(Thing::Number(c));
}然后带他们出去的时候match在他们身上。
https://stackoverflow.com/questions/40559931
复制相似问题