Menu
Coddy logo textTech

Map

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

map은 클로저를 인자로 받아 모든 요소에 적용하고, 그 결과로 구성된 새로운 배열을 반환합니다. 새로운 배열은 원본과 동일한 길이를 가집니다.

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled)               // [2, 4, 6, 8]

$0은 클로저의 첫 번째 매개변수를 나타내는 약어입니다. 더 긴 형태는 매개변수 이름과 반환 타입을 명시합니다:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map은 요소의 타입을 변경할 수도 있습니다. String을 반환하는 클로저를 통해 [Int]를 매핑하면 [String]을 얻게 됩니다:

let labels = nums.map { "#\($0)" }
print(labels)                // ["#1", "#2", "#3", "#4"]
challenge icon

챌린지

쉬움

한 줄의 입력을 읽습니다: 쉼표로 구분된 정수 리스트(화씨 온도)입니다.

C = (F - 32) * 5 / 9 공식을 사용하여 각 온도를 정수 산술(소수점 이하 버림, 0을 향해 절삭)로 섭씨로 변환합니다. 다음을 각각 별도의 줄에 출력하세요:

  1. ,로 연결된 섭씨 온도들
  2. 각 온도당 F=<f> C=<c> 접두사가 붙은 레이블을 ;로 연결하여 출력

두 줄 모두에 map을 사용하세요.

입력 32,212,98,0에 대한 출력은 다음과 같습니다:

0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17

치트 시트

map은 모든 요소에 클로저를 적용하고 동일한 길이의 새 배열을 반환합니다:

let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }  // [2, 4, 6, 8]

$0은 클로저의 첫 번째 매개변수에 대한 약어입니다. 명시적 형태:

let doubled = nums.map { (n: Int) -> Int in
    return n * 2
}

map은 요소의 타입을 변경할 수 있습니다 (예: [Int][String]):

let labels = nums.map { "#\($0)" }  // ["#1", "#2", "#3", "#4"]

직접 해보기

let f = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: 1행 = ","로 연결된 섭씨 온도
// TODO: 2행 = ";"로 연결된 "F=<f> C=<c>" 형식의 레이블
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨