我似乎记得以 _=
结尾的 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/