gpt4 book ai didi

go - 如何在 docopt 中构造无序参数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:23 24 4
gpt4 key购买 nike

我正在尝试构建接受一组选项的 docopt 用法。

Naval Fate.

Usage:
naval_fate.py ship
[-b <b_command>]
[-e <e_command>]

可运行示例: http://try.docopt.org/?doc=Naval+Fate.%0D%0A%0D%0AUsage%3A%0D%0A++naval_fate.py+ship%0D%0A++%5B-b+%3Cb_command%3E%5D%0D%0A++%5B-e+%3Ce_command%3E%5D&argv=ship+-e+c+

如果我使用它,它工作正常:

ship -b barg -e earg

输出是:

{
"-b": true,
"-e": true,
"<b_command>": "barg",
"<e_command>": "earg",
"ship": true
}

但是如果使用它,它仍然会为各个参数提供相同的值:

ship -e earg -b barg 

输出:

{
"-b": true,
"-e": true,
"<b_command>": "earg",
"<e_command>": "barg",
"ship": true
}

请注意,我将 earg 传递给了 -e,但它在输出中被分配给了 b_command。

我在 golang 的 docopt-go 包中看到了相同的行为。我的用法字符串错了吗?如果是这样,我应该如何构造 docopt 用法字符串,以便它分配正确的值正确的参数并遵守指定的参数?

最佳答案

naval_fate.py ship
[-b <b_command>]
[-e <e_command>]

你写的docopt的解释如下:

  • 子命令ship ,
  • 以任意顺序后跟零个或多个以下内容:
    • bool 标志 -b ,
    • 一个位置参数 <b_command> ,
    • bool 标志 -e ,
    • 一个位置参数 <e_command> .

因此以下所有内容都将被视为合法输入命令:

naval_fate.py ship -e
naval_fate.py ship BB -e
naval_fate.py ship -eb
naval_fate.py ship BB EE

表达标志的正确方式,如 -b <b_command>-e <e_command>通过一个名为 Options 的部分.

Naval Fate.

Usage:
naval_fate.py ship [options]

Options:
-b <b_command> Description of -b
-e <e_command> Description of -e

关于go - 如何在 docopt 中构造无序参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com