n: Int = 1 ☞n: Int = 1 > n = 3 ☞n: Int = 3 ▪val(値)型 val 変数名:型=値 例) > val n: Int = 1 ☞n: Int = 1 > n = 3 ☞error: reassginment to val 再代入できない! ≪Scalaちゃん推奨≫ ≪使ったらある意味負け≫
| case List(a, b, c) => a + b + c | case _ => 0 } ☞res1: Int = 6 > val v: Any = ”hoge” > v match { | case i: Int => i * 100 | case s: String => s.size | } ☞res2: Int = 4 変数a,b,cに値を束縛 型のマッチ
{ | var total = 0 | for (i <- 1 to n) total += i | total | } > def sumRecursive(n: Int): Int = n match { | case 1 => 1 | case _ => n + sumRecursive(n - 1) | } > (sumLoop(10), sumRecursive(10)) ☞res1: (Int, Int) = (55,55) ループ型 再帰型 返り値の型宣言 が必要!
lazy val status = { | println("Here open a box..."); "Alive!" | } | } > val cat = new SchrodingerCat > cat.status ☞Here open a box... ☞res1: java.lang.String = Alive! オブジェクトのフィールドの評価を、初期化時ではなく 参照時に行うようにする。 まだstatusが評価されてない ここで初めてstatusが評価される!