# 고차함수
Opened this issue · 1 comments
yoogail105 commented
#고차함수
- 다른 함수를 전달 인자로 받거나, 함수 실행의 결과를 함수로 반환하는 함수
- 스위프트의 함수는
일급객체
이다! 🔗 #40
→ 함수의 전달인자로 전달 하거나, 함수의 결과 값으로 반환할 수 있다.
고차함수의 종류
- map
- filter
- reduce
- forEach
- compactMap
- flatMap
yoogail105 commented
Map(_:)
- 기존의 컨테이너의 요소들에 대해 정의한 클로저로 매핑한 결과를 담은 새로운 컨테이너를 반환
- 데이터를 변형하고자 할 때 사용
- 기존의 데이터를 변형하지 않음
for-in
과 유사한 기능차이점
: 코드 간결, 재사용 용이, 컴파일러 최적화 성능?
Map 사용하기
- T타입의 transform을 매개변수로 받아서, T타입의 배열 [T]를 생성 - 파라미터: transform - a mapping closure - 파라미터로 시퀀스의 요소를 받아들여서, 같거나 다른 타입의 **변형된 벨류*transformed value*를 반환**한다. - 리턴 값: [T] - 변형된 시퀀스 요소들을 가지고 있는 배열(컨테이너)사용하기
- lowercase strings로 변형하고, 글자수를 세어서 새로운 배열에 할당하는 예제
map
사용
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }
let letterCounts = cast.map { $0.count }
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
// 'letterCounts' == [6, 6, 3, 4]
for-in
사용- map을 사용했을 때보다 코드가 길어진다.
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
var lowercaseNames = [String]()
var letterCounts = [Int]()
for element in cast {
lowercaseNames.append(element.lowercased())
letterCounts.append(element.count)
}
🔖 출처
- https://developer.apple.com/documentation/swift/array/3017522-map
- https://shark-sea.kr/entry/Swift-고차함수-Map-Filter-Reduce-알아보기