2010-11-13 51 views
9

我遇到的行为奇数位时,我用的就是在斯卡拉 - 2.8添加了自动生成的拷贝()方法。斯卡拉复制()奇数行为

从我读过的东西,当你声明一个给定的类作为案例类,很多东西都是自动为您生成,其中一个是copy()方法。所以,你可以做以下...

case class Number(value: Int) 
val m = Number(6) 

println(m)      // prints 6 

println(m.copy(value=7))  // works fine, prints 7 

println(m.copy(value=-7)) // produces: error: not found: value value 

println(m.copy(value=(-7))) // works fine, prints -7 

我道歉,如果这个问题已经被问过,但到底是怎么回事呢?

+0

只是要问这个问题为斯卡拉2.11以及。很高兴我看到了下面的答案。 – EdgeCaseBerg 2015-09-10 01:05:16

回答

13

斯卡拉让许多方法名称,其他语言不包括=-。你的论点被解析为value =- 7,所以它正在寻找一个方法=-value不存在。您的解决方法都会更改表达式的分解方式,以拆分=-

scala> var foo = 10 
foo: Int = 10 

scala> foo=-7 
<console>:7: error: value =- is not a member of Int 
     foo=-7 
    ^
+0

啊......这是有道理的。谢谢! – shj 2010-11-13 20:48:48

+2

另一个解决方法就是在你的等号周围放置一个空格,所以:'value = -7' – 2010-11-15 11:28:12