Scalaは全ての値がオブジェクトなので、
ほかの関数に値を渡すときは必然的に参照渡しになるはずですの。

でも参照渡しだと、引数をつたって元の値をいじれてしまうような…。
それって、わざわざ不変リストとか用意してる意味あるんですの??
と思ったので、試してみましたの。

object Sample {

 def main(args: Array[String]){
  var list = List(1,2,3)
  update(list)
 }

 def update(obj:List[Int]){
  obj = list.updated(1,999)
 }

}

へぇぇー。これを動かそうとすると、
代入するところで「reassignment to val」って出て、コンパイル出来ませんの。

なるほどー、仮引数(obj)はvalで宣言してるのと同じ扱いみたいですの。
これなら安心して不変リストを投げ回せますの。ぶんぶーん

0 コメント: