定数

Scalaにおける「定数」は、再代入ができない不変の値を指し、valキーワードを用いて定義されます。ここではScalaにおける定数の特徴、使い方、可変変数との違いについて詳しく説明します。


1. 定数の宣言方法(valキーワード)

Scalaでは、valを使って定数(不変変数)を宣言します。

scala
val pi = 3.14159 val name = "Scala"
  • pinameも一度値が代入されると、以後は変更できません。

  • 型推論が有効なので、型を明示しなくても自動的に推測されます。

明示的に型を指定することも可能です:

scala
val maxUsers: Int = 100

2. 再代入不可(不変)

valで定義された定数には再代入ができません。以下のようなコードはコンパイルエラーになります:

scala
val greeting = "Hello" // greeting = "Hi" // エラー: 再代入できない

これはイミュータブル(immutable)なプログラミングスタイルを促進し、副作用の少ない安全なコードを書くのに役立ちます。


3. 可変変数(var)との違い

特徴 val(定数) var(変数)
再代入 不可 可能
推奨スタイル 関数型プログラミングに推奨 状態を変える必要がある場合に使用
val x = 10 var y = 20

Scalaでは可能な限りvalを使うことが推奨されており、状態変化を避ける設計が重視されます。


4. 複雑な型のval

valはオブジェクト、リスト、関数などにも使えます。

scala
val numbers = List(1, 2, 3) val add = (a: Int, b: Int) => a + b

注意点として、参照は不変でも中身の変更は可能な場合があります(特にコレクションの場合)。例えば:

scala
val buffer = scala.collection.mutable.ArrayBuffer(1, 2, 3) buffer += 4 // これは可能(参照は変わっていない)

5. 定数の使用例

scala
val taxRate: Double = 0.1 val price: Double = 1000 val total: Double = price + (price * taxRate) println(s"合計金額: $total")

このように、valは一度代入した値を変更せずに、後続の計算や処理に安心して使うことができます。


まとめ

  • valは定数(再代入不可の変数)を定義するために使用。

  • 型は自動推論されるが、明示的に指定も可能。

  • 可能な限りvalを使用するのがScalaのベストプラクティス。

  • オブジェクトの中身の変更には注意(参照は不変でも、内容は可変の場合あり)。

生成日:2025/05/04