0Pricing
Scala for Backend Engineering & Functional Programming · レッスン

val、var、型

束縛と型推論です。

「val、var、型」はCoddyKit上の無料Scala for Backend Engineering & Functional Programmingレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはScala for Backend Engineering & Functional Programming学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。

Scalaのバインディング

Scalaでは、バインディングを使って値に名前を付けます。キーワードはvalとvarの2つです。

valは不変(再代入不可)ですが、varは可変(再代入可能)です。

valの宣言

valは名前を1度だけ値に束縛します。再代入しようとするとコンパイルエラーになります。

基本的にはvalを優先してください。不変性によって、コードを理解しやすくなります。

object Main {
  def main(args: Array[String]): Unit = {
    val name = "Ada"
    println(name)
  }
}

varの宣言

varは=を使って再代入できます。本当に可変な状態が必要な場合にだけ使用してください。

新しい値も、元の型に一致していなければならない点に注意してください。

object Main {
  def main(args: Array[String]): Unit = {
    var count = 0
    count = count + 1
    count = count + 1
    println(count)
  }
}

型推論

Scalaは通常、型を自動的に判断します。val x = 42と書くと、xは自動的にIntになります。

これを型推論と呼びます。常に型を書かなくても、静的型付けの恩恵を受けられます。

object Main {
  def main(args: Array[String]): Unit = {
    val x = 42
    val pi = 3.14
    val flag = true
    println(x)
    println(pi)
    println(flag)
  }
}

明示的な型アノテーション

コロンの後に型を明示することもできます。val x: Int = 42のように記述します。

これはドキュメントとして明示したい場合や、推論された型より広い型を選びたい場合に便利です。

object Main {
  def main(args: Array[String]): Unit = {
    val age: Int = 30
    val price: Double = 9.99
    val label: String = "Sale"
    println(label + ": " + price)
  }
}

よく使う数値型

Scalaには複数の数値型があります。

  • Intは整数に使用します
  • Longは大きな整数に使用します
  • Doubleは小数に使用します
  • Floatはより小さい範囲の小数に使用します

整数リテラルのデフォルトはIntで、小数リテラルのデフォルトはDoubleです。

object Main {
  def main(args: Array[String]): Unit = {
    val whole: Int = 7
    val big: Long = 9000000000L
    val dec: Double = 2.5
    println(whole + dec)
  }
}

BooleanとChar

Booleanはtrueまたはfalseを保持します。Charはシングルクォートで記述した1文字を保持します。

これらも完全な型であり、valやvarに格納できます。

object Main {
  def main(args: Array[String]): Unit = {
    val isReady: Boolean = true
    val grade: Char = 'A'
    println(isReady)
    println(grade)
  }
}

String型

Stringはダブルクォートで囲んだテキストを保持します。Scalaの文字列は不変です。

+で連結したり、多くの便利なメソッドを呼び出したりできます。

object Main {
  def main(args: Array[String]): Unit = {
    val first = "Grace"
    val last = "Hopper"
    val full = first + " " + last
    println(full.toUpperCase)
  }
}

varよりvalを使う理由

不変の値を使うと、さまざまなバグを防げます。ほかの処理によって値を勝手に変更されることがないためです。

  • 動作を理解しやすい
  • 並行コードでも安全
  • 関数型のスタイルを促進する

変更が本当に必要な場合にだけvarを使用してください。

型安全性を実際に確認する

Scalaは静的型付け言語なので、プログラムを実行する前にコンパイラーが型の不一致を検出します。

Intにテキストを代入するとコンパイル時に失敗します。以下は有効で、型が正しいコードです。

object Main {
  def main(args: Array[String]): Unit = {
    val quantity: Int = 3
    val unitPrice: Double = 4.50
    val total: Double = quantity * unitPrice
    println(total)
  }
}

まとめて使う

不変および可変のバインディングを、型推論やアノテーションと組み合わせて、1つの小さなプログラムにまとめます。

コンパイラーがすべての型をどのように追跡しているか確認してください。

object Main {
  def main(args: Array[String]): Unit = {
    val base = 100
    var running = base
    val step: Int = 25
    running = running + step
    println(running)
  }
}

理解度チェック

バインディングと型についての理解度を確認しましょう。

まとめ

Scalaで値に名前を付ける方法を学びました。

  • valは不変のバインディングで、varは可変です
  • 型推論によって、値から型が決まります
  • val x: Intのように明示的なアノテーションを追加できます
  • 基本的な型にはInt、Long、Double、Boolean、Char、Stringがあります
  • より安全で明確なコードのためにvalを優先してください

よくある質問

「val、var、型」レッスンは無料ですか?

はい。「val、var、型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Scala for Backend Engineering & Functional Programmingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。

「val、var、型」で何を学びますか?

束縛と型推論です。 ブラウザで直接実行するハンズオンコードでScala for Backend Engineering & Functional Programmingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Scala for Backend Engineering & Functional Programmingを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのScala for Backend Engineering & Functional Programmingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「val、var、型」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このScala for Backend Engineering & Functional Programmingレッスンでコードを書いて実行できますか?

はい。すべてのScala for Backend Engineering & Functional Programmingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. REPL の利用
  2. val、var、型
  3. 文より式
  4. 文字列補間
← Scala for Backend Engineering & Functional Programmingに戻る