swift 고차함수

슆공부·2022년 6월 22일
0

고차함수

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

Map(변형)

map은 데이터를 변형하고자 할 때 사용합니다.

기존 데이터를 변형하여 새로운 컨테이너를 만드는데, 기존 데이터는 변형되지 않습니다.
특히 map은 기존의 for-in 구문과 큰 차이가 없지만, map 사용시 다음과 같은 이점이 있습니다.

코드의 간결성
재사용 용이
컴파일러 최적화 성능 좋음
차이점은 눈으로 봤을 때 가장 빨리 보이기 때문에 다음 예제를 살펴보겠습니다.

하기 전에 map의 기본 형태를 보자면
array.map(transform: T throws -> T)
T타입의 transform을 받아 새로운 T타입의 컨테이너를 생성한다는 이야기입니다.

let numArray = [1,3,5,7,9]

let multiArray = numArray.map { $0 * 2 }


print(multiArray)

// [2, 6, 10, 14, 18]
let numArray = [1,3,5,7,9]

let multiArray = numArray.map({ (number: Int) -> Int in

    return number * 2

})


print(multiArray)

// [2, 6, 10, 14, 18]

filter 추출

filter는 데이터를 추출하고자 할 때 사용합니다.

기존 컨테이너에서 내부의 값을 걸러 새로운 컨테이너를 만듭니다.

filter 또한 map과 마찬가지로 for-in문과 크게 다르지 않습니다.

우선, filter의 기본 형태를 보면

array.filter(isIncluded: T throws -> T)

T타입의 isIncluded를 받아 새로운 T형태의 컨테이너를 생성합니다.

let stringAttay = ["가수", "대통령", "개발자", "선생님", "의사", "검사", "건물주"]
let threeCountArray = stringAttay.filter { $0.count == 3 }
print(threeCountArray)
// ["대통령", "개발자", "선생님", "건물주"]

Reduce

reduce는 데이터를 합쳐주기 위해 사용합니다.

기존 컨테이너에서 내부의 값들을 결합하여 새로운 값을 만듭니다.

let numberArray = [1,2,3,4,5,6,7,8,9,10]
let sum = numberArray.reduce(0) { $0 + $1 }
print(sum)
// 55

0개의 댓글