Map과 Collect
Coddy Ruby 여정의 기초 섹션에 포함된 레슨 — 88개 중 68번째.
each는 요소에 대해 작업을 수행하는 데 유용하지만, 때로는 배열을 새로운 배열로 변환하고 싶을 때가 있습니다. map 메서드(collect라고도 함)가 바로 이 역할을 합니다. 이 메서드는 각 요소에 대해 블록을 실행한 결과를 포함하는 새로운 배열을 생성합니다.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # 출력: 2, 4, 6, 8each와의 주요 차이점은 map이 변환된 값들을 담은 새로운 배열을 반환한다는 점입니다. 원본 배열은 변경되지 않고 그대로 유지됩니다.
섭씨 온도를 화씨 온도로 변환하는 실용적인 예제입니다:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # 출력: 32, 68, 212문자열과 함께 map을 사용할 수도 있습니다:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # 출력: Alice, Bobmap과 collect 메서드는 동일합니다. 루비는 두 가지 이름을 모두 제공하므로, 코드에서 더 읽기 좋은 것을 사용할 수 있습니다. 대부분의 루비 개발자들은 더 짧은 map을 선호합니다.
챌린지
쉬움쉼표로 구분된 정수들이 포함된 한 줄의 입력을 읽습니다 (예: 2,4,6,8,10).
입력을 정수 배열로 분할한 다음, map 메서드를 사용하여 각 숫자를 제곱(자기 자신을 곱함)한 새로운 배열을 생성하세요.
새로 생성된 제곱 배열의 각 요소를 개별 줄에 출력하세요.
예를 들어, 입력이 2,4,6,8,10인 경우 출력은 다음과 같아야 합니다:
4
16
36
64
100입력이 1,2,3,4,5인 경우 출력은 다음과 같아야 합니다:
1
4
9
16
25입력이 3,7,11인 경우 출력은 다음과 같아야 합니다:
9
49
121입력이 10인 경우 출력은 다음과 같아야 합니다:
100치트 시트
map 메서드(collect라고도 함)는 각 요소에 블록을 적용하여 배열을 새로운 배열로 변환합니다. 원본 배열은 변경하지 않고 변환된 값들을 담은 새로운 배열을 반환합니다.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # 출력: 2, 4, 6, 8온도 변환 예시:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # 출력: 32, 68, 212문자열 예시:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # 출력: Alice, Bobmap과 collect는 동일한 메서드입니다. 대부분의 Ruby 개발자들은 map을 선호합니다.
직접 해보기
# 쉼표로 구분된 입력을 읽습니다
input = gets.chomp
# TODO: 아래에 코드를 작성하세요
# 1. 입력 문자열을 정수 배열로 분할합니다
# 2. map 메서드를 사용하여 각 숫자를 제곱합니다
# 3. 제곱된 각 숫자를 개별 줄에 출력합니다이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.