Scala Copy() 奇怪的行为
当我使用 Scala-2.8 中添加的自动生成的 copy() 方法时,我遇到了一些奇怪的行为。
根据我的阅读,当您将给定的类声明为案例类时,会自动为您生成很多内容,其中之一就是 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
如果这个问题已经被问过,我很抱歉,但是这里发生了什么?
I'm experiencing an odd bit of behavior when I use the auto-generated copy() method that was added in Scala-2.8.
From what I've read, when you declare a given class as a case-class, a lot of things are auto-generated for you, one of which is the copy() method. So you can do the following...
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
I apologize if this question has already been asked, but what is going on here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Scala 允许许多其他语言不允许的方法名称,包括
=-
。您的参数被解析为value =- 7
,因此它正在寻找value
上不存在的方法=-
。您的解决方法都改变了表达式的解析方式,以拆分=
和-
。Scala allows many method names that other languages don't, including
=-
. Your argument is being parsed asvalue =- 7
so it is looking for a method=-
onvalue
which doesn't exist. Your workaround all change the way the expression is parsed to split up the=
and the-
.