以 _= 结尾的 Scala 方法

标签 scala scala-2.8

我似乎记得以 _= 结尾的 Scala 处理方法特别是这样的事情:

object X { var x: Int = 0; def y_=(n : Int) { x = n }}

X.y = 1

应调用 X.y_=(1) .但是,在 2.8.0 RC1 中,我收到一条错误消息:
<console>:6: error: value y is not a member of object X
       X.y = 1
         ^

有趣的是,仅尝试调用不带括号的方法也会失败:
scala> X.y_= 1
<console>:1: error: ';' expected but integer literal found.
       X.y_= 1
             ^

我是记错了一些确实存在的东西,还是我只是凭空捏造出来的?

最佳答案

这是 Scala 中的一种极端情况。没有 getter 就不能有 setter,反之亦然。

以下工作正常:

scala> object X {
     |   var x: Int = 0
     |   def y = x
     |   def y_=(n: Int) { x = n }
     | }
defined module X

scala> X.y = 45

scala> X.y
res0: Int = 45

关于以 _= 结尾的 Scala 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2765473/

相关文章:

scala - Scala 2.8 中的 classOf[] 与 2.7 不同吗?

斯卡拉 2.8 : _ behaviour changed?

scala - 在定义诸如 : 的列表时,这是 Scala 的错误吗

scala - 如何测试 Float 或 Double 是无穷大还是 NaN?

java - 重播实时收集的数据以模拟真实的流量延迟和消息排序

scala - scala中是否有指数函数

java - 自定义协议(protocol)处理程序未在 OSX 上传递参数

scala - 根据参数值和函数参数类型推断通用父类(super class)型

sqlite - 如何将库依赖添加到 Build.scala 的类路径?

scala - 将新的 Iterable{} 代码从 Scala 2.7.7 移植到 2.8