고차함수 정리하기

Hisop·2022년 10월 19일
0

Swift

목록 보기
6/7

다른 함수를 전달인자로 받거나 결과를 함수로 반환하는 함수를 고차함수라고 한다.
주로 쓰이는 Map, Filter, Reduce에 대해 정리해보려고 한다.


Map

func map<T>(_ transform: (Self.Element) throws -> T) rethrows -> [T]

기존 데이터를 수정하여 새로운 컨테이너를 만드는데 사용한다. 내부적으로 for-in과 같은 방식으로 동작하고, 컴파일러 최적화 성능이 좋다

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

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

// 2, 6, 10, 14, 18

위 예시처럼 사용한다.
주로 클로저로 인자를 넘겨주기에 클로저 표현식의 '$0' 같은 표현들을 주로 사용한다. 클로저 표현식의 $0, $1

Filter

func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element]

데이터를 추출하고자 할 때 사용한다. 값을 필터링 해 새 컨테이너를 만든다.

let strArray = ["str","123","456","ab","abc","안녕"]

let newArray = strArray.filter { $0.count == 3 }

//str, 123, 456, abc

위 예시처럼 사용한다.

Reduce

func reduce<Result>(
    into initialResult: Result,
    _ updateAccumulatingResult: (inout Result, Self.Element) throws -> ()
) rethrows -> Result

내부 값을 합쳐 새로운 값을 만든다. 초기값을 지정해줄 수 있다.

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

let new = numArray.reduce(0) {$0 + $1}

//45

Array의 값들을 모두 더해주는 예시.

Joined

func joined() -> FlattenSequence<Self>
func joined(separator: String = "") -> String

위의 함수들과 주로 같이 쓰이는 함수로 배열에 있는 여러 원소들을 하나로 묶어줄 때 사용한다.

var message = ["Swift", "is","fun"]

var newString = message.joined(separator:" ")

print(newString)

//Swift is fun

참고 자료

고차함수 - Map, Filter, Reduce 알아보기
Apple Documentation

profile
42seoul - C, C++ / YagomAcademy - Swift

0개의 댓글