С простым var
вы не можете сделать это.
Самое близкое, что вы можете получить, это создать пару геттер-сеттер, которая будет выглядеть как var
снаружи:
object Stuff {
private var b0 = B("123")
def b: B = b0
def b_=(newb: B): Unit = {
b0 = newb
println(s"b is changed to $newb")
}
}
Тогда:
Stuff.b = B("xxx")
Напечатает новое значение.
Обратите внимание, что сеттер - это метод с именем b_=
, который несколько специально обрабатывается компилятором Scala - присваивание Stuff.b = B("xxx")
автоматически переводится в Stuff.b_=(B("xxx"))
. Это работает, только если сеттер сопровождается геттером.