アリティ
Arity は、オプションの解析に必要なパラメーターの数を定義します。
annotation および programmatic のアリティ設定の使用と比較して、legacy annotation には制限があります。これらについては、以下のサンプルの注記に記載されています。 |
プログラマティック
アノテーション
従来のアノテーション
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/ 整数 MAX |
ONE_OR_MORE | 1/ 整数 MAX |
legacy annotation は最小アリティの定義をサポートしていません。 |
プログラマティック
アノテーション
従来のアノテーション
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.