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でした。