Scala错误编译OptionBuilder

时间:2011-02-04 21:48:25

标签: parsing scala apache-commons-cli

我使用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(),则无效。

为什么?

BTW,Java解析这个问题。

1 个答案:

答案 0 :(得分: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(),则无效。

     

为什么?

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

  

BTW,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')