Menu
Coddy logo textTech

Select와 Reject

Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 21번째.

select 메서드는 블록이 참(truthy)인 값을 반환하는 요소들만 포함하는 새 배열을 반환합니다. 이것은 Ruby에서 "filter"를 표현하는 방식입니다.

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject는 그 반대입니다. 블록이 false를 반환하는 모든 항목을 유지합니다:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

둘 다 새로운 배열을 반환하며, 원본은 변경되지 않습니다.

블록은 단지 서술어(predicate)일 뿐이며, true 또는 false로 평가되는 모든 것이 작동합니다:

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

챌린지

초급

쉼표로 구분된 정수 목록을 읽습니다. 다음 두 줄을 출력하세요:

  1. 10보다 큰 숫자들 (select 사용), , 로 연결하여 출력
  2. 3으로 나누어떨어지지 않는 숫자들 (reject 사용), , 로 연결하여 출력

입력이 3,7,12,15,20인 경우, 출력은 다음과 같습니다:

12, 15, 20
7, 20

치트 시트

select는 블록이 참(truthy)인 요소들로 구성된 새 배열을 반환합니다 ("filter"와 유사함):

evens = [1,2,3,4].select { |n| n.even? }  # [2, 4]

reject는 그 반대로, 블록이 거짓(falsy)인 요소들을 유지합니다:

odds = [1,2,3,4].reject { |n| n.even? }   # [1, 3]

두 메서드 모두 새 배열을 반환하며, 원본 배열은 변경되지 않습니다.

직접 해보기

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: 1행, 10보다 큰 숫자들, ", "로 연결됨
# TODO: 2행, 3으로 나누어 떨어지지 않는 숫자들, ", "로 연결됨
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름의 모든 레슨