我正在编写一个 REPL(所以我在内部使用 picocli 来解析在应用程序中键入的命令,而不是解析命令行参数),并且我有一个带有选项的命令,我希望它的行为如下:
> cmd --myopt
Myopt value = 5
> cmd --myopt 4
> cmd --myopt
Myopt value = 4
也就是说,如果选项没有指定值,则打印参数的当前值,但如果指定了值,则设置该值。我想这样做:
int value = 1; // default
@Option(names = {"-e", "--epsilon"}, arity = "0..1",
description = "Acceptable values: [0, 1] default: ${DEFAULT-VALUE}")
void setValue(String strValue) {
if (strValue == "") {
printValue();
} else {
try {
value = Integer.parseInt(strValue);
// validate value
} catch (NumberFormatException e) {
// print help for this option
}
}
}
这是最好的方法吗?是否有另一种方法来捕获描述中的默认值,同时仍然允许setValue
知道没有指定任何值?