gpt4 book ai didi

java - 定义一个具有强制参数和可选参数的选项

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:34 25 4
gpt4 key购买 nike

我目前正在尝试提出一种构建命令行选项的方法,该选项在提供时可以采用一个必需参数或第二个可选参数(除了必需参数之外)。我正在尝试使用 apache commons cli 来实现这一点。

即myProgram -a [整数]

myProgram -a "test" --> isValid
myProgram -a "test" 2 --> also isValid

我尝试过:Option.builder("a").hasArg().numberOfArgs(2).optionalArg(true).build();

&

Option.builder("a").hasArg().numberOfArgs(2).build();

两者都没有按预期工作。第一个示例使两个参数都是可选的,并且允许传递空参数,这违反了要求。

第二个示例使两个参数都是必需的,并且在仅提供字符串类型 arg 时失败。

我查看了 commons cli 的文档,但他们提供的用例并没有涉及像这样的复杂案例,同样也没有从 api 文档中获得太多详细信息。

我预计当 -a 未提供任何值时程序会失败,但当提供 1 或 2 个参数(如前所示)时程序会成功。

最佳答案

过去,在这种情况下,我添加了第二个选项。因此,在您的示例中,-b。

-b [bvalue]   If -a is enabled, ensure that it uses bvalue to thinginate.

如果您的第二个(可选)值充当标志,它可以只是一个 boolean 标志。

如果您的第二个(可选)值是一些更任意的输入,则第二个选项可以采用单个必需参数。

虽然我确信您有理由将参数组织为 -a reqdval optval,但它通常会导致更有用的命令行无论如何都不具有这些多层可选性(即选项中存在第二位可选值)。您可以将其视为两级和三级嵌套菜单之间的用户体验差异。由于项目数量有限,两级菜单通常更有用。 (如果没有更具体的用例细节,答案必须是笼统的。)

关于java - 定义一个具有强制参数和可选参数的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583718/

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