変数(var, val) - Scala覚書
-
概要
var, val, 関数を変数に入れた際の挙動など
@Author mwSoft
@Date 2010/11/19@Env Scala2.8 -
varとvalの扱い
Scalaは変数を宣言する際に、varもしくはvalを指定する。
varは普通の変数。valはCのconstや、Javaのfinalみたいな、再代入が禁止された変数になる。
def main(args: Array[String]) { var i = 0 i = 1 // OK val j = 0 j = 1 // ERROR(reassignment to val) }
元々、変数の大半はconstを指定した方が良いものが大半。なので、実際にコーディングすると変数の半分以上はvalを使うようになる。
書いたソースがconstの嵐になる人にとってはありがたい機能。
-
変数に関数を入れる
関数を変数に放り込むことができる。以下はIntを2つ引数に取って、掛け合わせて返す関数を記述して、func1という変数に代入している。
def main(args: Array[String]) { val func1 = (i: Int, j: Int) => i * j println( func1( 3, 4 ) ) }
括弧内に引数を設定して、=> の後に処理を記述する。
複数行の関数を書く場合は下記のような感じだろうか。
def main(args: Array[String]) { val func2 = { (i: Int, j: Int): => if( j == 0 ) null else i / j } println( func1( 3, 4 ) ) //=> 12 }
戻り値は最後に評価された値になる。
ちなみに関数はapplyで呼び出すことも可能。
def main(args: Array[String]) { val func3 = (i: Int, j: Int) => i * j println( func3.apply( 5, 4 ) ) //=> 20 }