제라스의 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
반응형