고차함수 (map, filter, reduce)

hoBahk·2021년 11월 20일
0

오늘은 고차함수에 대해 알아 보겠습니다.

고차함수란?

다른 함수를 전달인자로 사용하거나 리턴 결과를 함수로 반환하는 함수를 말합니다.
스위프트는 함수를 일급시민으로 취급하는 함수형 프로그래밍 패러다임을 지향하기 때문에 고차함수를 사용할 수 있습니다.

map

데이터를 변형하여 반환하는 함수이다. 기존의 데이터는 변형되지 않고 새로운 데이터에 변형된 데이터를 넣어 배열로 반환합니다.

let array: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

//기본형
let arrayString = array.map( {
    (value: Int) -> String in return String(value)
} )

//축약형
let arrayString = array.map{String($0)}

print(arrayString) // ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

filter

해당 클로저의 연산에 부합하는 데이터를 추출할 때 사용합니다. map처럼 기존 데이터는 변경되지 않습니다.

let array: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

//기본형
let evenNumberOfArray = sortedArray.filter( {
    (value: Int) -> Bool in return value % 2 == 0
} )

//축약형
let evenNumberOfArray = sortedArray.filter{ $0 % 2 == 0 }

print(evenNumberOfArray) // [2, 4, 6, 8, 10]

reduce

reduce는 결합하는 함수입니다. 배열의 요소들을 입력한 클로저에 맞게 연산결과가 리턴됩니다.
문자열 배열일 경우에는 문자열이 리턴됩니다.

let array: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

//기본형
let sumOfArray = array.reduce(0, {
    (value1: Int, value2: Int) -> Int in return value1 + value2
} )

//축약형
let sumOfArray = array.reduce(0, { $0 + $1 })

print(sumOfArray) // 55

다음에는 다른 고차함수인 flatMap과 compactMap에 대해서도 알아보겠습니다.

profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글