sealed クラスと網羅的な switch
コンパイラーが検査できる階層を閉じます
「sealed クラスと網羅的な switch」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
閉じた型のファミリー
sealed クラスは、サブタイプの集合を固定します。そのファイルの外にあるコードでは新しいサブタイプを追加できないため、ファミリー全体が把握できます。
sealed class Shape {}サブタイプの宣言
sealed 型のサブクラスは同じファイルに置きます。それらを合わせると、コンパイラーが考慮すべきすべての variant になります。
class Circle extends Shape {}
class Square extends Shape {}直接インスタンス化できない
sealed クラスは暗黙的に abstract となるため、直接作成することはありません。作成できるのは、既知のサブタイプのいずれかです。
var s = Shape(); // error
var s = Circle(); // oksealed が役立つ理由
サブタイプが網羅的であるため、Dart は完全な一覧を把握できます。そのため switch で、すべてのケースを処理したか検証できます。
サブタイプに対する switch
sealed 値に対する switch では、パターンによって各サブタイプにマッチできます。各分岐では、マッチした正確な型を扱えます。
switch (shape) {
case Circle(): print('round');
case Square(): print('boxy');
}網羅性のチェック
サブタイプを1つでも忘れると、コンパイラーがエラーを報告します。sealed の switch でケースを黙って抜かすことはできません。
default は不要
すべてのケースを処理しているため、default 分岐は不要です。追加すると、将来追加されたケースの見落としを隠してしまうだけです。
式としての switch
switch を式として使用すると、値を直接計算できます。網羅性の要件は変わらないため、すべての分岐が何らかの値を返します。
final name = switch (shape) {
Circle() => 'circle',
Square() => 'square',
};新しい variant の追加
後から新しいサブタイプを追加すると、それを処理していないすべての switch が赤く表示されます。コンパイラーが各箇所の更新を案内してくれます。
class Triangle extends Shape {}
// existing switches now errorsealed と abstract の違い
abstract クラスでは、外部に未知のサブタイプを作成できます。そのため switch を網羅的にはできません。sealed は集合を閉じ、完全なチェックを可能にします。
状態の表現に最適
sealed 型は、Loading、Success、Error のようなアプリの状態をモデル化するのに適しています。これにより、各 UI 分岐が必ず存在することを保証できます。✅
sealed class Result {}
class Loading extends Result {}
class Done extends Result {}理解度チェック
sealed の網羅性について確認しましょう。
まとめ
sealed クラスは型のファミリーを閉じ、すべての switch を網羅的にするため、ケースの不足がコンパイルエラーになることを学びました。🎯
AI チューターと学ぶ Dart — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「sealed クラスと網羅的な switch」レッスンは無料ですか?
はい。「sealed クラスと網羅的な switch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「sealed クラスと網羅的な switch」で何を学びますか?
コンパイラーが検査できる階層を閉じます ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「sealed クラスと網羅的な switch」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- final フィールドと深い不変性
- sealed クラスと網羅的な switch
- base、interface、final 修飾子
- copyWith と値による等価性