我正在使用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')