7

我似乎记得 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
             ^

我是不是记错了确实存在的东西,还是我只是用整块布发明的?

4

2 回答 2

13

这是 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
于 2010-05-04T13:11:09.360 回答
3
scala> object X { var x: Int = 0; def y_=(n : Int) { x = n }}
defined module X

scala>

scala> X y_= 1

scala> X.x
res1: Int = 1

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

scala> X.y = 1

scala> X.y
res2: Int = 1

scala>
于 2010-05-04T13:11:40.297 回答