この記事は?
Scalaを勉強していて、var,val,mutable,immutableの組み合わせで理解に苦しんでいたところ、
@takc923さんの
scalaのvar, valとmutable, immutableについて
を読み、こちらの記事がとても参考になったのですが、最終的なまとめがなかったので、var,valとmutable,immutableの組み合わせのまとめを書こうと思った次第です。
前提
上の記事にもありますが、この前提を理解する必要があります。
var: 参照を変えることができる
val: 参照を変えることはできない
mutable: 要素変更後も参照が変わらない
immutable: 要素変更後は新しい参照を返す
組み合わせのまとめ
var & mutable: 参照を変えられるし要素変更後の参照は変わらないのでエラーにならない
var & immutable: 参照を変えられるので、要素変更後に新しい参照が返ってきてもエラーにならない
val & mutable: 参照は変えられないが、要素変更後の参照は変わらないのでエラーにならない
val & immutable: 参照は変えられないが、要素変更後に新しい参照が返そうとするのでエラーになる