Map 체이닝
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 22번째.
기초 과정에서 map을 만나보셨을 것입니다. 이는 각 요소를 변환하여 새로운 배열을 생성합니다. select, reject 등과 함께 연결하여 사용할 때 진정한 위력이 발휘됩니다.
각 메서드는 배열을 반환하므로, 결과에 대해 다른 메서드를 호출하는 것을 계속 이어갈 수 있습니다:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
puts result.inspect # [10, 30, 50]체인을 위에서 아래로 읽으세요: 숫자로 시작하고, 홀수만 남기고, 각각에 10을 곱합니다. 임시 변수나 루프(loop)는 사용하지 않습니다.
&:method_name 단축형은 블록이 단 하나의 메서드만 호출할 때마다 작동합니다:
["hi", "yo"].map { |s| s.upcase } # ["HI", "YO"]
["hi", "yo"].map(&:upcase) # ["HI", "YO"] (동일함)이 단축 표기법은 Ruby 코드 어디에서나 볼 수 있습니다. 나중에 보게 되면 알아볼 수 있도록 하세요.
챌린지
쉬움콤마로 구분된 단어 목록을 읽습니다. 3글자보다 긴 단어들을 대문자로 변환하고, , 로 연결하여 한 줄에 출력하세요.
하나의 체인으로 작성하세요: 긴 단어들을 select하고, &:upcase를 사용하여 map한 다음, join합니다.
입력 hi,hello,yo,coddy,sup에 대한 출력은 다음과 같습니다:
HELLO, CODDY치트 시트
배열 메서드 체이닝 — 각 메서드는 새 배열을 반환하므로, 결과에 대해 계속해서 메서드를 호출할 수 있습니다:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
# [10, 30, 50]블록이 단 하나의 메서드만 호출할 때는 &:method_name을 단축형으로 사용하세요:
["hi", "yo"].map(&:upcase) # ["HI", "YO"]직접 해보기
words = gets.chomp.split(",")
# TODO: select + map(&:upcase) + join 연결하기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.