exhaustive_cases
列挙型のようなクラス内のすべての定数に対してケース節を定義します。
このルールは、Dart 2.9 から利用可能です。
このルールにはクイックフィックスが利用可能です。
詳細
#列挙型のようなクラスのインスタンスに対する切り替えは、網羅的である必要があります。
列挙型のようなクラスは、以下の条件を満たす具体的な(抽象的でない)クラスとして定義されます。
- プライベートな非ファクトリコンストラクタのみを持つ
- 2 つ以上の、型が包含クラスである静的定数フィールドを持つ
- 定義ライブラリ内にそのクラスのサブクラスを持たない
実行 列挙型のようなクラス内のすべての定数に対してケース節を定義します。
悪い例
dart
class EnumLike {
final int i;
const EnumLike._(this.i);
static const e = EnumLike._(1);
static const f = EnumLike._(2);
static const g = EnumLike._(3);
}
void bad(EnumLike e) {
// Missing case.
switch(e) { // LINT
case EnumLike.e :
print('e');
break;
case EnumLike.f :
print('f');
break;
}
}
良い例
dart
class EnumLike {
final int i;
const EnumLike._(this.i);
static const e = EnumLike._(1);
static const f = EnumLike._(2);
static const g = EnumLike._(3);
}
void ok(EnumLike e) {
// All cases covered.
switch(e) { // OK
case EnumLike.e :
print('e');
break;
case EnumLike.f :
print('f');
break;
case EnumLike.g :
print('g');
break;
}
}
使用方法
#exhaustive_cases
ルールを有効にするには、analysis_options.yaml
ファイルのlinter > rules の下に exhaustive_cases
を追加します。
analysis_options.yaml
yaml
linter:
rules:
- exhaustive_cases
特に明記されていない限り、このサイトのドキュメントは Dart 3.5.3 を反映しています。最終更新日:2024年7月3日。 ソースを表示 または 問題を報告する。