제라스의 iOS 공부/Swift 문법

[Swift 문법] 고차함수 with 클로저

Xerath(제라스) 2023. 8. 18. 10:25
728x90
반응형

고차함수가 뭘까?

 

일단, 고차함수는 다른 함수를 매개변수로 받거나 함수 실행의 결과를 함수로 반환하는 함수다.

 

코드를 한번 보자.

// 이런 함수가 있다고 하자.
func getName(_ name: String) -> String {
    return "내 이름은 \(name)"
}

// 이 함수를 클로저 형태로 보면 이런 식으로 될 것이다.
var getNameClosure : (String) -> String

// sayHello라는 함수를 만들고 해당 함수에는 매개변수로 클로저를 두자. 여기에는 나중에 getName이란 함수를 넣어볼 거다.
func sayHello( getName: (String) -> String, name: String) -> String {
    return getName(name)
}

// getName 매개변수에 getName함수를 넣는다.
let resultOne = sayHello(getName: getName, name: "제라스")

// getName 함수는 위처럼 해도 되고, 이렇게 매개변수를 비워놔도 된다.
let resultOne = sayHello(getName: getName(_:), name: "제라스")

 

 

이런 식으로 하는건데,

 

Swift 표준 라이브러리에는 주로 3가지의 고차함수를 많이 쓴다.

1. map: 주어진 배열 원소들에 각각 적용함.

2. filter: 주어진 배열 중 조건에 맞는 것만 추출함.

3. reduce : 주어진 배열을 모두 더함.

 

다른 것 중엔 sort, sorted도 있다.

1. sort: 해당 배열을 정렬함.

2. sorted: 해당 배열을 정렬했을 때의 배열을 리턴함.

arr = [1,2,3,4,5]

// 오름차순 sort
arr.sort()

// 오름차순 sorted
arr.sort(by: >)

// 내림차순 sort
var sortedArr = arr.sorted()

// 내림차순 sorted
var descendingSortedArr = arr.sorted(by: >)
728x90
반응형