Google и моя неисправная память дают мне подсказки, что это происходит, но все попытки заканчиваются.
class Y {
var y = 0
}
var m = new Y()
m.y_(3)
error: value y_ is not a member of Y
Пожалуйста, скажите мне, что я делаю что-то не так. (Также: пожалуйста, скажите мне , что это такое Я делаю неправильно.)
EDIT
То, что я не делаю неправильно, или, по крайней мере, не единственное, что я делаю неправильно, - это то, как я вызываю сеттера. Следующие вещи также терпят неудачу, все с тем же сообщением об ошибке:
m.y_ // should be a function valued expression
m.y_ = (3) // suggested by Google and by Mchl
f(m.y_) // where f takes Int => Unit as an argument
f(m.y) // complains that I am passing in Int not a function
Я делаю это все через SimplyScala, потому что я слишком ленив и нетерпелив, чтобы настроить Scala на своей крошечной домашней машине. Надеюсь, что это не так ...
И победитель ...
Фабиан, который указал, что у меня не может быть пробела между _ и =. Я подумал, почему это должно быть, и тогда мне пришло в голову:
Имя установщика для y
равно , а не y_
, это y_=
!
Обратите внимание:
class Y {
var y = 0
}
var m = new Y()
m.y_=(3)
m.y
res1: Int = 3
m.y_=
error: missing arguments for method y_= in class Y;
follow this method with `_` if you want to treat
it as a partially applied function
m.y_=
^
m.y_=_
res2: (Int) => Unit =
def four(f : Int => Unit) = f(4)
four(m.y_=)
m.y
res3: Int = 4
Еще один удачный день на StackExchange.