【问题标题】:How to force at least one argument from a set in Docopt?如何从Docopt的集合中强制至少一个参数?
【发布时间】:2017-05-15 23:39:57
【问题描述】:

我希望我的程序至少需要一个集合中的一个参数才能使参数有效。

为了举例,假设我有 3 个开关(-a、-b 和 -c)和两个强制参数。

这些都是有效的。 myapp -a FOO BAR myapp -a -b FOO BAR myapp -a -c FOO BAR

这不会是:

myapp FOO BAR

【问题讨论】:

    标签: c# docopt


    【解决方案1】:

    您可以使用省略号 ... 来说明一个选项应该出现一次或多次:

    Usage:
        myapp (-a|-b|-c)... <FOO> <BAR>
    

    这里我们声明-a-b-c 应该出现一次或多次。

    接受:

    myapp -a FOO BAR
    myapp -a -b FOO BAR
    myapp -a -c FOO BAR
    

    拒绝:

    myapp FOO BAR
    

    【讨论】:

    • 那不允许多次提供标志吗?即myapp -a -a -b。不是问题,只是观察。
    • 是的,这是真的。如果您想避免这种情况,那么您可能必须拼出所有组合,这会使命令行规范对用户不太友好。所以这是一种权衡。
    • 我可以忍受。
    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多