2010-11-13 82 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