'every' による条件判定
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 14/65。
any() は少なくとも1つの要素が条件を満たしているかを確認しますが、リスト内のすべての要素が特定の要件を満たしていることを検証する必要がある場合もあります。every() メソッドは、すべての要素に対して条件をテストし、そのすべてが条件を満たした場合にのみ true を返すことで、この機能を提供します。
every() メソッドは、各要素に対して true または false を返すテスト関数を受け取ります。いずれかの要素がテストに失敗した場合、every() は直ちに false を返します。すべての要素がテストに合格した場合にのみ、true を返します。
List<int> examScores = [75, 82, 68, 91, 77];
// すべての学生が合格したか確認する (スコア > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueこのメソッドは、処理を進める前にすべての項目が特定の基準を満たしていることを確認する必要があるバリデーションのシナリオで特に役立ちます。every() メソッドは、テストに失敗する要素が見つかるとすぐにチェックを停止するため、全体的な適合性が必要な大規模なリストに対して効率的です。
チャレンジ
簡単バッチ内のすべての製品が要求された基準を満たしているかを確認することで、品質管理システムを管理するプログラムを作成してください。プログラムは以下の手順で行う必要があります:
- 工場名を表す文字列の入力を読み込む
- 製品の品質スコアを表す複数の整数の入力を読み込む(入力は
-1を受け取った時点で終了します) - 最小品質基準のしきい値を表す整数の入力を読み込む
every()メソッドを使用して、すべての製品スコアが最小しきい値以上であるかどうかを確認する- 品質管理の結果を、以下に示す正確な形式で出力する
例えば、工場名が "Electronics Factory"、品質スコアが 85, 92, 78, 88, 95、最小しきい値が 75 の場合、プログラムは以下のように出力する必要があります:
Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipment工場名が "Textile Mill"、品質スコアが 68, 82, 74, 91、最小しきい値が 70 の場合、プログラムは以下のように出力する必要があります:
Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement required工場名が "Food Processing"、品質スコアが 95, 98, 92、最小しきい値が 90 の場合、プログラムは以下のように出力する必要があります:
Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipmentプログラムでは、すべての品質スコアが最小しきい値以上であることを確認するために every() メソッドを使用する必要があります。すべての製品が基準を満たしている場合は "Batch approved for shipment" を、いずれかの製品が最小要件を満たしていない場合は "Batch rejected - quality improvement required" を表示してください。
チートシート
every() メソッドは、リスト内のすべての要素が特定の条件を満たしているかどうかをチェックします。すべての要素がテストに合格した場合にのみ true を返し、いずれかの要素が不合格の場合は false を返します。
List<int> examScores = [75, 82, 68, 91, 77];
// すべての学生が合格したかチェックする (スコア > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueevery() メソッドは、テストに失敗する要素が見つかるとすぐにチェックを停止するため、すべての要素が条件を満たしている必要がある大規模なリストにおいて効率的です。
自分で試してみよう
import 'dart:io';
void main() {
// 工場名を読み込む
String? factoryName = stdin.readLineSync();
// -1が入力されるまで品質スコアを読み込む
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// 最小しきい値を読み込む
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: 以下にコードを記述してください
// every() メソッドを使用して、すべてのスコアが最小基準を満たしているか確認します
// 結果を要求された形式で出力します
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// すべての製品が合格したかどうかと、最終的なステータスを出力します
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー2関数型リスト操作
'map' による変換'where' によるフィルタリング'.toList()' の使用'any' による条件チェック'every' による条件判定'firstWhere' による検索まとめ:データフィルタリング