Scalaの変数定義

 

こんにちはKUJIRAです。今日はScalaの変数定義についてのメモです。

 

Scalaには2つの変数定義方法があります。それは中の値が変更可能な変数の「var」と変更不可能な変数の「val」です。

 

「var」は一度値を入れた後でも後から値を変えられます。このような変数をミュータブルな変数というらしいです。以下の例を見てください。

 

scala> var testString = "test"
testString: java.lang.String = test

scala> println(testString)
test

scala> testString = "test2"
testString: java.lang.String = test2

scala> println(testString)
test2

 

以上のようなことができます。これとは逆に「val」の方は一度入れた値を後から上書きすることはできません。こちらは変更不可なのでイミュータブルな変数と言われているそうです。

 

scala> val testString2 = "test"
testString2: java.lang.String = test

scala> testString2 = "test2"
console:8: error: reassignment to val
      testString2 = "test2"
                  ^

scala>

 

このように「val」は値を上書きできません。そのためJavaで言うところのfinal変数と同じということになります。
また、これらの「val」と「var」は型を指定して宣言することもできますが、型を指定せずとも変数を宣言することができます。型推論と言って変数に値が代入されたタイミングで値の型を自動で判別し決定します。これはスクリプト系の言語をやっている人には馴染み深い機能だと思います。例えば

 

scala> var testInt = 1
testInt: Int = 1

scala> val testInt2 = 1
testInt2: Int = 1

scala> var testBoolean = true
testBoolean: Boolean = true

scala> val testBoolean2 = true
testBoolean2 = true

 

以上が型推論です。次に型を指定する場合も見てみましょう。

 

scala> var testString: String = "test"
testString String = test

scala> var testString2: java.lang.String = "test"
testString2: java.lang.String = test

 

ここまでのことをまとめると変数の定義方法は以下のようになります。

 

var 変数名(: 型) = 値

val 変数名(: 型) = 値

 

型の指定に関してはJavaの型を使います。ScalaはJavaとの互換性があります。そのためJavaの型やライブラリを使うことができます。なので型を指定するときも「java.lang.String」を指定することによりString型の変数が指定できるのです。

 

とまぁ、ざっくりと変数について勉強したことをメモりました。本日はここまでKUJIRAでした。