参数个数
Arity 定义了选项解析需要多少个参数。
与使用注解和编程方式设置参数个数相比,传统注解 在参数个数设置方面存在一些限制。这些限制在以下示例中的注释中提到。 |
-
编程方式
-
注解
-
传统注解
CommandRegistration zeroOrOne() {
return CommandRegistration.builder()
.command("example")
.withOption()
.longNames("arg")
.arity(OptionArity.ZERO_OR_ONE)
.and()
.build();
}
@Command(command = "example")
String zeroOrOne(
@Option(arity = OptionArity.ZERO_OR_ONE) String arg)
{
return String.format("Hi '%s'", arg);
}
@ShellMethod(key = "example")
String zeroOrOne(
@ShellOption(arity = 1) String arg)
{
return String.format("Hi '%s'", arg);
}
值 | 最小值/最大值 |
---|---|
ZERO |
0 / 0 |
ZERO_OR_ONE |
0 / 1 |
EXACTLY_ONE |
1 / 1 |
ZERO_OR_MORE |
0 / 整数最大值 |
ONE_OR_MORE |
1 / 整数最大值 |
传统注解 不支持定义最小参数个数。 |
-
编程方式
-
注解
-
传统注解
CommandRegistration zeroOrOneWithMinMax() {
return CommandRegistration.builder()
.command("example")
.withOption()
.longNames("arg")
.arity(0, 1)
.and()
.build();
}
@Command(command = "example")
String zeroOrOneWithMinMax(
@Option(arityMin = 0, arityMax = 1) String arg)
{
return String.format("Hi '%s'", arg);
}
@ShellMethod(key = "example")
String zeroOrOneWithMinMax(
@ShellOption(arity = 1) String arg)
{
return String.format("Hi '%s'", arg);
}
在以下示例中,我们有一个名为 arg1 的选项,其类型定义为 String[]。Arity 定义它至少需要 1 个参数,最多不超过 2 个。如以下特定异常 TooManyArgumentsOptionException 和 NotEnoughArgumentsOptionException 所示,这些异常被抛出以指示参数个数不匹配。
shell:>e2e reg arity-errors --arg1
Not enough arguments --arg1 requires at least 1.
shell:>e2e reg arity-errors --arg1 one
Hello [one]
shell:>e2e reg arity-errors --arg1 one two
Hello [one, two]
shell:>e2e reg arity-errors --arg1 one two three
Too many arguments --arg1 requires at most 2.