【问题标题】:Scala Copy() Odd BehaviorScala Copy() 奇怪的行为
【发布时间】:2011-05-09 15:20:09
【问题描述】:

当我使用 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

如果这个问题已经被问过,我很抱歉,但是这里发生了什么?

【问题讨论】:

  • 也只是为 scala 2.11 提出这个问题。很高兴我看到了下面的答案。

标签: scala scala-2.8 named-parameters


【解决方案1】:

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
       ^

【讨论】:

  • 啊……这很有道理。谢谢!
  • 另一种解决方法就是在等号周围放一个空格,所以:value = -7
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
相关资源
最近更新 更多