'every'로 조건 확인하기
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 14번째.
any()가 적어도 하나의 요소가 조건을 충족하는지 확인하는 반면, 때로는 리스트의 모든 요소가 특정 요구 사항을 충족하는지 확인해야 할 때가 있습니다. 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'로 찾기요약 - 데이터 필터링