HIT해

[Swift 기초문법 - 24] 고차함수 Higher Order Function 본문

Swift/Swift 기초문법

[Swift 기초문법 - 24] 고차함수 Higher Order Function

힛해 2024. 8. 14. 04:45
728x90

 

고차함수란?

함수인데 매개변수로 클로저를 받고 매개변수로 받은 클로저로 값을 변환하거나 반환하는 함수

 

사용예시

func getName(_name: STring) -> String{
	return "내 이름은 \(name)"
}

var getNameClosure : (String) -> String


// completion이라는 클로저를 매개변수로 받고
func sayHello(completion : (String) -> String, name : String) -> String{
	
    // 클로저를 반환값으로 받는다.
    return completion(name)
}

let resultOne = sayHello(completion : getName(_:), name : "자우림")
// print 내 이름은 자우림

 

클로저가 매개변수이자 return값으로 사용되는데 이와 같은 형식을 고차함수라고 말한다.

 

프로젝트 사용예시

map을 살펴보자

 

map이라는 inlinalbe 메소드가 매개변수를 클로저에 담아 형태를 바꿔 결과를 내뱉는 형식

=> 고차함수

 

drop을 살펴보자

 

prefix도 유사한 형태로 프로그래밍되어있다.

 

보통 컬렉션에서 고차함수를 사용한다.

let numbers = [3,5,6,7]

let stringNumbers = numbers.map { (aNumber : Int) -> String in
	return "\(aNumber)입니다"
}

// 숫자로 되어있던 배열들이 [3입니다,5입니다, ...] 으로 변환

let evenNumers : [Int] = numbers.filter { aNumber in
	return aNumber % 2 == 0
}
// 짝수인 요소들만 가져옴

 

이런 것들을 고차함수라고 이야기한다.

 

정리하자면

매개변수로 클로저를 받아서 값을 내뱉은 함수.