고차함수란?
- 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수
- 말이 너무 어렵다... 단순하게는?
매개변수로 함수를 가지는 함수
- 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다
ㄴ 왜 쓰나요?
함수형 프로그래밍의 장점을 사용하기 위해서!
- 코드 간결
- 코드 재사용 쉬움
- 컴파일러 최적화 측면에서의 성능 차이
- 멀티스레드 환경에서 부작용 방지
Map(_:)
- 기존에 있는 데이터를 변경할 때 사용해요
- 매개변수로 전달된 함수를 실행하고, 그 결과값을 반환합니다
- 기존값에 영향을 주지 않아요. 복사된 값을 반환하기 때문에 원본 값에 문제가 생기지 않아요
func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]
- 반복문인 for - in 과 같은 기능이지만, 코드를 더욱 간결하게 작성할 수 있어요
- 예시
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
let letterCounts = cast.map { $0.count }
// 'letterCounts' == [6, 6, 3, 4]
- ["Vivien", "Marlon", "Kim", "Karl"] 이라는 값이 들어있는 배열 cast
# lowercaseNames
- $0 은 첫번째 매개변수라는 뜻
- cast.map을 통해 앞에서부터 모든 배열의 요소를 순회하며 .lowercased()를 해주었어요
# letterCounts
- 마찬가지로 cast 배열을 순회하며 요소의 .count를 세어서 새로운 배열로 만들어 출력합니다
'iOS > Swift' 카테고리의 다른 글
[Swift] 고차함수(3/3) filter(_:) (0) | 2023.11.23 |
---|---|
[Swift] 고차함수(2/3) reduce(_:_:) (0) | 2023.11.23 |
[Swift] 상속 Inheritance (0) | 2023.11.21 |
[Swift] 프로퍼티 감시자 Property Observer (0) | 2023.11.21 |
[Swift] ARC/strong/weak/reference cycles(참조 순환) (1) | 2023.11.20 |