방명록
- [Swift] 고차함수2023년 06월 11일 13시 15분 45초에 업로드 된 글입니다.작성자: 이중엽
1. 개요
고차함수의 종류와 사용 방법
Swift에서 함수는 일급객체로 취급하여 다른 함수를 다른 함수의 전달인자로 사용 가능
이때 매개변수로 함수를 갖는 함수가 고차함수
대표적인 고차함수
- map
- filter
- reduce
2. map
1. 매개변수로 전달된 함수를 실행
2. 함수로 인하여 변형된 결과를 반환
적용 가능 타입
배열, 딕셔너리, 세트, 옵셔널
컨테이너가 담고 있는 각 원소의 값을 매개변수를 통해 받은 함수에 적용한 후, 다시 컨테이너에 포장하여 반환
let numbers = [1,2,3,4,5] // 후행 클로저 // 매개변수(클로저) : (number: Int) -> Int let doubleNumbers1 = numbers.map() { (number: Int) -> Int in return number * 2 } // 경량 문법 let doubleNumbers2 = numbers.map { $0 * 2 }
3. filter
1. 매개변수로 전달된 함수를 실행
2. 조건에 일치하는 원소만을 기존 순서에 맞게 변환
적용 가능 타입
배열, 딕셔너리, 세트, 옵셔널
컨테이너가 담고 있는 각 원소의 값 중 조건과 일치하는 원소만을 새로운 컨테이너에 기준 순서에 맞게 반환
let numbers = [1,2,3,4,5] // 후행 클로저 // 매개변수(클로저) : (number: Int) -> Bool let evenNumbers1 = numbers.filter() { (number: Int) -> Bool in return number % 2 == 0 } //결과 -> evenNumbers1 = [2,4] //경량 문법 let evenNumbers2 = numbers.map{ $0 % 2 == 0 }
4. reduce
사실상 결합의 기능으로 사용
적용 가능 타입
배열, 딕셔너리, 세트, 옵셔널
컨테이너가 담고 있는 원소를 차례대로 연산하여 나온 값을 다음 원소와 다시 연산하는 과정을 거친 후 최종 결과를 반환
let numbers = [1,2,3,4,5] // 후행 클로저 // 매개변수(클로저) : (number: Int) -> Bool let sum = numbers.reduce(0, { (result: Int, next: Int) -> Int in return result + next } //sum = 15 let doubleNumbers = numbers.reduce(0) { $0 + $1 }
초기값 : 0
result : result / $0
next : next / $1위 식을 해석하면 초기값은 0이며, 이 초기값은 result의 초기값이 되기도 한다.
이 후 원소를 차례대로 연산( + )하여 나온 값을 result에 저장한다.
결과적으로 result에는 값이 누적되고 next는 다음 원소를 가리킨다.'Swift' 카테고리의 다른 글
[Swift] View Life Cycle (0) 2023.06.11 [Swift] App Life Cycle (0) 2023.06.11 [Swift] 값타입과 참조타입 차이점 (2) 2022.08.17 다음글이 없습니다.이전글이 없습니다.댓글