Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- next.js
- 약타입언어
- reactnative android
- 나를부르는숲
- DelayInput
- switch구문
- 비반환함수
- multiline
- reactnavigation
- Server-Side-Rendering
- 72410
- client-side-rendering
- SWIFT
- ReactNative
- beforePopState
- JavaScript
- 스위프트
- 데이터타입함수
- replacingOccurrences
- 옵셔널
- 동적언어
- 약타입
- textinput
- ios
- 리액트네이티브
- 함수형프로그래밍
- 17681
- 프로그래머스
- 중첩함수
- lineending
Archives
- Today
- Total
으니의 개발로그
[Swift] 맵(map) 본문
[Swift] 맵(map)
이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.
맵 : 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수
배열, 딕셔너리, 세트, 옵셔널 등에서 사용할 수 있다.
for-in 구문과 맵 메서드의 사용 비교
let numbers: [Int] = [0, 1, 2, 3, 4]
var doubleNumbers: [Int] = [Int]()
var strings: [String] = [String]()
// for 구문 사용
for number in numbers {
doubleNumbers.append(number * 2)
strings.append("\(number)")
}
print(doubleNumbers)
/* [0, 2, 4, 6, 8] */
print(strings)
/* ["0", "1", "2", "3", "4"] */
// map 메서드 사용
doubleNumbers = numbers.map({(number: Int) -> Int in
return number * 2
})
strings = numbers.map({(number: Int) -> String in
return "\(number)"
})
print(doubleNumbers)
/* [0, 2, 4, 6, 8] */
print(strings)
/* ["0", "1", "2", "3", "4"] */
클로저 표현의 간략화
let numbers: [Int] = [0, 1, 2, 3, 4]
// 기본 클로저 표현식 사용
var doubleNumbers = numbers.map({(number: Int) -> Int in
return number * 2
})
// 매개변수 및 반환 타입 생략
doubleNumbers = numbers.map({ return $0 * 2 })
print(doubleNumbers)
/* [0, 2, 4, 6, 8] */
// 반환 키워드 생략
doubleNumbers = numbers.map({ $0 * 2 })
print(doubleNumbers)
/* [0, 2, 4, 6, 8] */
// 후행 클로저 사용
doubleNumbers = numbers.map { $0 * 2 }
print(doubleNumbers)
/* [0, 2, 4, 6, 8] */
클로저의 반복 사용
let evenNumbers: [Int] = [0, 2, 4, 6, 8]
let oddNumbers: [Int] = [0, 1, 3, 5, 7]
let multiplyTwo: (Int) -> Int = { $0 * 2 }
let doubledEvenNumbers = evenNumbers.map(multiplyTwo)
print(doubledEvenNumbers)
/* [0, 4, 8, 12, 16] */
let doubledOddNumbers = oddNumbers.map(multiplyTwo)
print(doubledOddNumbers)
/* [0, 2, 6, 10, 14] */
다양한 컨테이너 타입에서의 맵의 활용
let alphabetDictionary: [String: String] = ["a": "A", "b": "B"]
var keys: [String] = alphabetDictionary.map{ (tuple: (String, String)) -> String in
return tuple.0
}
print(keys)
/* ["a", "b"] */
keys = alphabetDictionary.map{ $0.0 }
let values: [String] = alphabetDictionary.map{ $0.1 }
print(keys)
/* ["a", "b"] */
print(values)
/* ["A", "B"] */
var numberSet: Set<Int> = [1, 2, 3, 4, 5]
let resultSet = numberSet.map{ $0 * 2 }
print(resultSet)
/* [8, 6, 2, 4, 10] */ // set은 순서가 없으므로 무작위로 나온다.
let optionalInt: Int? = 3
let resultInt: Int? = optionalInt.map{ $0 * 2 }
print(resultInt)
/* Optional(6) */
let range: CountableClosedRange = (0...3)
let resultRange: [Int] = range.map{ $0 * 2 }
print(resultRange)
/* [0, 2, 4, 6] */
'Swift > 책 정리' 카테고리의 다른 글
[Swift] 필터(filter) (0) | 2021.02.04 |
---|---|
[Swift] 옵셔널(2) - 옵셔널 추출 (0) | 2021.02.02 |
[Swift] 옵셔널(1) - 옵셔널 사용 (0) | 2021.02.01 |
[Swift] 함수(6) - 반환 값을 무시할 수 있는 함수 (0) | 2021.01.30 |
[Swift] 함수(6) - 종료되지 않는 함수 (0) | 2021.01.30 |