고차함수란?
- 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수
- 말이 너무 어렵다... 단순하게는?
매개변수로 함수를 가지는 함수
- 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다
ㄴ 왜 쓰나요?
함수형 프로그래밍의 장점을 사용하기 위해서!
- 코드 간결
- 코드 재사용 쉬움
- 컴파일러 최적화 측면에서의 성능 차이
- 멀티스레드 환경에서 부작용 방지
Reduce(_:_:)
- 값을 조건에 맞게 걸러내는 함수입니다
- 매개변수로 전달되는 클로저의 리턴 타입은 Bool 형 이에요
func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> Set<Element>
- 예시 1
let cast: Set = ["Vivien", "Marlon", "Kim", "Karl"]
let shortNames = cast.filter { $0.count < 5 }
shortNames.isSubset(of: cast)
// true
shortNames.contains("Vivien")
// false
- cast라는 집합의 요소를 순회
- 해당 요소가 count가 5 미만이라면 true, 5 이상이라면 false를 반환해요
- 특별한 매개변수없이 사용한다면 리턴 구문만 작성해도 괜찮습니다
- 예시 2
let numbers: Array = [1,2,3]
let evenNumbers = number.filter { (number: Int) -> Bool in
return number % 2 == 0
}
print(evenNumbers)
// [2]
- number 라는 매개변수를 지정해서 짝수인 것만 filter 하는 구문입니다
'iOS > Swift' 카테고리의 다른 글
[Swift] 프로토콜, 확장 (0) | 2023.12.11 |
---|---|
[Swift] 예외처리(Error, throw, throw, do-catch, try) (0) | 2023.12.07 |
[Swift] 고차함수(2/3) reduce(_:_:) (0) | 2023.11.23 |
[Swift] 고차함수(1/3) map (0) | 2023.11.23 |
[Swift] 상속 Inheritance (0) | 2023.11.21 |