Методы Scala, заканчивающиеся в _ =

Я, кажется, помню методы обработки 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
             ^

Я - misremembering что-то, что действительно на самом деле существует, или я просто изобретал его из целой ткани?

7
задан Alexey Romanov 4 May 2010 в 13:04
поделиться

2 ответа

Это один из тех краевых случаев в Scala. У вас не может быть сеттера без геттера и наоборот .

Следующее работает нормально:

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
13
ответ дан 6 December 2019 в 12:47
поделиться
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>
3
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: