고차함수(Higher-order function)

다른 함수를 전달인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수를 뜻함

스위프트에서 map,filter,reduce 등이 고차함수에 속함

Map : 변형

map은 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성한다.

for 구문과 비슷하게 사용 할 수 있다

let a = [1,2,3,4]
let b = a.map{$0 * 2}
//[2,4,6,8]

Filter: 추출

불값을 리턴하는 클로저를 통해 트루인 것만 포함한 새로운 컨테이너를 리턴

let nums  = [1,2,3,4,5,6,7,8,9,10]
let evenNums = nums.filter{ $0 % 2 == 0}
print(evenNums)

Reduce:결합

let nums = [1,2,3,4,5,6,7,8,9,10]

let sum = nums.reduce(0){ $0+$1 }
let max = nums.reduce(0){$0>$1 ? $0:$1}
print(sum)//55
print(max)//10

1번 파라메터로 받는 값은 초기값, 클로저 구문에 원하는 식을 넣으면 됨

다음 예제는 최대값과 총합을 구하는 예제임