defがよくわからない
defは関数を宣言するとき。
って思っているのだが
def a: String = "A"
みたく変数を宣言できちゃう。
厳密には変数でなく関数なのかも。
とりあえず、defとvalで比べてみる
scala> def a: String = "HOGE" a: String scala> var b: String = "PIYO" b: String = PIYO
参照のしかたみたいなのが違うのかな?よくわからない。
var の場合は文字列への参照がいってるみたいだけど。
defの場合は呼ばれて、文字列への参照を返してるようにも思える。
defは定数のように後から値を変更できあいってのが大きな違いか。
で、だ。
クラスコンストラクタで
class Hoge(x: String){ def str = x }
みたく、メンバ変数をdefで宣言してるソースをみた。
これはvalにすると外から値をいじれるからそうしてないのか?
とこういうときはdefで宣言するのがセオリーなのかな?
よくわからん。