在Scala中的命名参数中不能使用负数

时间:2014-11-06 21:33:33

标签: scala named-parameters

我使用的是Scala 2.11.2。

如果我有这个Fraction类:

case class Fraction(numerator: Int, denominator: Int) {}

然后这会出错:

val f = new Fraction(numerator=-1, denominator=2)

但这不是:

val f = new Fraction(-1, denominator=2)

错误消息是:

Multiple markers at this line
- not found: value 
 numerator
- not found: value 
 numerator

我尝试在其他代码段中使用负数并得到相同的结果,但文档没有提到这是不可能的。

我做错了吗?

由于

1 个答案:

答案 0 :(得分:12)

您需要=-之间的空格,或者您可以在括号中包含-1,否则编译器会感到困惑。这是因为=-是一个有效的方法名称,因此编译器无法判断您是要为命名参数赋值还是进行方法调用。

所以这会出错:

val f = Fraction(numerator=-1, denominator=2)

但这没关系:

val f = Fraction(numerator = -1, denominator = 2)

这是这样的:

val f = Fraction(numerator=(-1), denominator=2)