>>336
自分で書かなくていいってだけで
外部に公開される変数を宣言したら自動でsetter/getterが定義されてる
直接変数に代入してるように見えるのはsetter呼び出しのシンタックスシュガー

class MyClass {
var a: Int = _
}

val m = new MyClass()
val x = m.a
m.a = y

上のように書いたら実際は下のように展開される

class MyClass {
private[this] var aa: Int = _
def a = aa
def a_=(value: Int) { aa = value }
}

val m = new MyClass()
val x = m.a
m.a_=(y)