我正在使用Apache commons cli(1.2)进行命令行解析。

我的代码中包含以下内容:

import org.apache.commons.cli.OptionBuilder
OptionBuilder.withLongOpt("db-host").hasArg.
withDescription("Name of the database host").create('h')

我收到错误hasArg is not a member of org.apache.commons.cli.OptionBuilder。如果将.hasArg更改为.hasArg(),则没有任何区别。

为什么?

顺便说一句,Java很好地解决了这一问题。

最佳答案



因为hasArg中没有实例方法OptionBuilder,所以只有一个静态方法。由于hasArg是静态方法,您显然需要在类上调用它,而不是在类的实例上调用它。



我不知道这与解析有什么关系。 Scala对此也进行了解析。另外,一些完全不同的编程对该代码执行或不执行的操作完全无关紧要,因为这是Scala代码,而不是其他某种语言。

您需要执行以下操作:

import org.apache.commons.cli.OptionBuilder

OptionBuilder.withLongOpt("db-host")
OptionBuilder.hasArg
OptionBuilder.withDescription("Name of the database host")

val optionParser = OptionBuilder.create('h')

10-04 12:56