count, all?, any?, none?
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨. 56개 중 24번째.
루프를 작성하지 않고도 컬렉션에 관한 질문에 답할 수 있는 네 가지 간단한 Enumerable 메서드입니다.
count는 block을 만족하는 요소의 개수를 반환합니다:
[1, 2, 3, 4, 5].count { |n| n.even? } # 2
[1, 2, 3, 4, 5].count # 5 (블록 없음, 총 개수)all?은 모든 요소가 block을 만족할 때 true입니다:
[2, 4, 6].all? { |n| n.even? } # true
[2, 4, 7].all? { |n| n.even? } # falseany?는 하나 이상이 조건을 만족할 때 true입니다:
[1, 2, 3].any? { |n| n.even? } # true
[1, 3, 5].any? { |n| n.even? } # falsenone?은 그중 어느 것도 그렇지 않을 때 true입니다:
[1, 3, 5].none? { |n| n.even? } # true메서드는 단락 평가를 수행합니다. any?는 첫 번째 일치 항목에서 멈추고, all?은 첫 번째 실패에서 멈춥니다. 비용이 적습니다.
챌린지
쉬움쉼표로 구분된 테스트 점수 목록(정수)을 읽습니다. 다음 조건을 만족할 때 클래스는 유효한 통과 클래스입니다:
- 점수 중
none?도 음수가 아닙니다(기록되지 않은 테스트) - 점수가 모두
100이하입니다(all?사용) - 점수 중
any?가 정확히100입니다(만점이 하나 이상 있음) - 최소 3개의 점수가
>= 70입니다(count사용)
정확히 한 줄을 출력합니다:
- 네 가지 조건이 모두 충족되면
Valid: <count> passing(count는>= 70인 점수의 개수) - 그렇지 않으면
Invalid
입력이 72,80,100,65,90인 경우: 4개의 점수가 >= 70이고, 음수는 없으며, 모두 <= 100이고, 그중 하나가 100이므로 출력은 Valid: 4 passing입니다.
72,80,90인 경우: 3개가 passing이지만 만점이 없으므로 Invalid입니다.
직접 해보기
scores = gets.chomp.split(",").map(&:to_i)
# TODO: all?, any?, none?, count를 결합하여 Valid vs Invalid를 결정
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름의 모든 레슨
5Enumerable의 강력한 기능
select와 rejectmap 연결하기reduce / injectcount, all?, any?, none?group_by와 partitionsort_by, min_by, max_by복습 - 데이터 파이프라인직접 연습해 보세요: 온라인 Ruby 컴파일러