元數
引數數量定義了選項解析所接受的引數個數。
與 註解 和 程式化 使用引數數量設定相比,傳統註解 存在一些限制。這些限制將在下面的示例註釋中提及。 |
-
程式設計式
-
註解
-
傳統註解
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);
}
| 值 | 最小/最大 |
|---|---|
零 |
0 / 0 |
零或一 |
0 / 1 |
正好一個 |
1 / 1 |
零或多個 |
0 / Integer MAX |
一個或多個 |
1 / Integer MAX |
傳統註解 不支援定義最小引數數量。 |
-
程式設計式
-
註解
-
傳統註解
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[]。引數數量定義它至少需要 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.