Menu
CoddyTech

'every' による条件判定

CoddyのDartジャーニー「論理とフロー」セクションの一部。レッスン 14/65。

any()は少なくとも1つの要素が条件を満たすかどうかを確認しますが、リスト内のすべての要素が特定の要件を満たしているか確認する必要がある場合もあります。every()メソッドは、すべての要素を条件に照らしてテストし、すべてが条件を満たす場合にのみtrueを返すことで、この機能を提供します。

every()メソッドは、各要素に対してtrueまたはfalseを返すテスト関数を受け取ります。テストに失敗する要素が1つでもあると、every()はただちにfalseを返します。すべての要素がテストに合格した場合にのみ、trueを返します。

List<int> examScores = [75, 82, 68, 91, 77];

// すべての生徒が合格したか確認する (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

このメソッドは、処理を続行する前にすべての項目が特定の条件を満たしていることを確認する必要がある検証の場面で、特に役立ちます。every()メソッドはテストに失敗する要素が見つかるとすぐにチェックを終了するため、すべての項目が条件を満たす必要がある大規模なリストで効率的です。

challenge icon

チャレンジ

簡単

バッチ内のすべての製品が必要な基準を満たしていることを確認して、品質管理システムを管理するプログラムを作成してください。プログラムでは次の処理を行います。

  1. 工場名を表す文字列入力を読み取る
  2. 製品の品質スコアを表す複数の整数入力を読み取る(-1を受け取ると入力が終了します)
  3. 品質基準の最小しきい値を表す整数入力を読み取る
  4. every()メソッドを使って、すべての製品スコアが最小しきい値以上かどうかを確認する
  5. 以下に示す正確な形式で品質管理の結果を出力する

たとえば、工場名が"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"を表示してください。

自分で試してみよう

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');
  // すべての製品が合格したかどうかと最終的なステータスを出力する
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: Dartオンラインコンパイラ