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フィードバックを取得できます。ローカル設定は不要です。