繁体   English   中英

用clap迭代位置参数

[英]Iterate through positional arguments with clap

假设我有以下命令行:

./app foo bar baz

我想从中得到这个数组:

["foo", "bar", "baz"]

有没有办法在clap中执行此操作,因为位置参数可以是任意计数?

您正在寻找的函数是values_of ,您可以像这样使用它:

let matches = App::new("My Super Program")
        .arg(Arg::with_name("something")
            .multiple(true))
        .get_matches();

let iterator = matches.values_of("something");
for el in iterator.unwrap() {
    println!("{:?}", el);
};

如果您不关心保留无效的UTF-8, 则更容易的选择是使用values_of_lossy返回实际的Vector( Option<Vec<String>> )而不是迭代器。

let arguments = matches.values_of_lossy("something").unwrap();      
println!("{:?}", arguments);

请记住,您实际上不应该打开实际程序中的值,因为如果未提供参数,它将在运行时崩溃。 唯一的例外是required(true)设置的参数。 调用get_matches时,它们的缺失会导致运行时错误(带有有用的错误消息)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM