代码之家  ›  专栏  ›  技术社区  ›  Serjik bp3

获取星型字符作为锈色中的命令参数

  •  0
  • Serjik bp3  · 技术社区  · 5 年前

    我在rust中编写了一个非常简单的命令行计算器,得到一个数字、一个运算符,然后是另一个数字,然后进行计算并打印结果。为了显示从命令参数得到的信息,我在主代码之前循环打印了它们。我对加号、减号和除号都很好,但是对于乘法,当我打印它时,我得到了意外的结果,而不是一个星号(*)表示乘法,我得到了当前目录中的文件列表。 这是我的锈代码,如果有任何解决办法,我会感谢你的解释。

    use std::env;
    
    fn main(){
        let args: Vec<String> = env::args().collect();
    
        for arg in args.iter(){
            println!("{}", arg);
        }
    
        let mut result = 0;
        let opt = args[2].to_string();
        let oper1 = args[1].parse::<i32>().unwrap();
        let oper2 = args[3].parse::<i32>().unwrap();
        match opt.as_ref(){
            "+" => result = oper1 + oper2,
            "-" => result = oper1 - oper2,
            "*" => result = oper1 * oper2,
            "/" => result = oper1 / oper2,
            _ => println!("Error")
        }
    
        println!("{} {} {} = {}", oper1, opt, oper2, result);
    
    }
    
    1 回复  |  直到 5 年前
        1
  •  7
  •   Vaughan Hilts    5 年前

    通配符(*)正在向外扩展。外壳会在它看到你之前把这个发送给程序 实际输入的

    You can read more about here.

    为了避免这种情况,您可以用引号将其括起来,如下所示:

    ./program 1 "*" 1