5

我正在使用 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 解析得很好。

4

1 回答 1

12
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().

为什么?

因为里面没有实例方法hasArgOptionBuilder只有静态方法。由于hasArg是一个静态方法,你显然需要在类上调用它,而不是在类的实例上。

顺便说一句,Java 解析得很好。

我不明白这与解析有什么关系。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')
于 2011-02-04T22:03:21.530 回答