0

我想将某种形状或形成字典/地图/对象传递到我的 Clap 应用程序中。我可以预处理 dict 以将其转换为一些 csv 或其他内容。我的问题是我无法在 clap 文档中找到哪些字符对参数值有效以及如何转义它们。这与拍手无关,而是特定于外壳吗?

我可以通过类似的东西吗

myApp --dicty="a=1,b=3,qwe=yxc"

?

4

1 回答 1

2

这与拍手无关,而是特定于外壳吗?

大多数情况下,是的。clap将获得 shell 确定的任何参数并对其进行解析。

然而,clap 内置了对值集的支持,来自自述文件:

  • 支持多个值(即-o <val1> -o <val2>-o <val1> <val2>
  • 支持分隔值(即-o=val1,val2,val3,也可以更改分隔符)

如果这还不够,那么您必须将其定义dicty为 a String,您将收到字符串a=1,b=3,qwe=yxc(我认为您不会收到引号),然后您必须自己手动解析(正则表达式/拆分/...) 或更高级的东西(例如 csv crate 虽然这可能有点矫枉过正)。

不过,这似乎是一个有点奇怪的期权价值。

FWIW structopt(它建立在 clap 之上以提供更具声明性的 UI,并且应该是 Clap 3 的一部分)并不完全支持这类事情,但可以相对容易地强制进入它:https ://github.com/ TeXitoi/structopt/blob/master/examples/keyvalue.rs

通过一些修改将允许类似

myApp -D a=1 -D b=3 -D que=yxc

或(尽管请参阅链接片段中的评论以了解限制)

myApp -D a=1 b=3 que=yxc

被收集为vec![("a", "1"), ("b", "3"), ("que", "yxc")]从中创建哈希图是微不足道的。

于 2021-02-16T10:01:40.477 回答