在使用Scala-2.8中添加的自动生成的copy()方法时,我遇到了一些奇怪的行为。
据我所知,当您将一个给定的类声明为case-class时,会自动为您生成许多内容,其中之一就是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如果这个问题已经被问过了,我很抱歉,但是这里发生了什么?
发布于 2010-11-14 04:39:18
Scala允许许多其他语言不允许的方法名称,包括=-。您的参数被解析为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
^https://stackoverflow.com/questions/4174510
复制相似问题