본문 바로가기

iOS 앱 개발자 프로젝트/Swift 문법 정복하기

[Swift] Closure, Higher Order Function (2)

2024년 4월 2일 화요일

 

3월에 공부했던 클로저와 고차함수를 제대로 이해하기 위해 연습하기 

 

[Swift] Closure, Higher Order Function 1


 

 복. 씁. 하. 기.

 

 

Closure (클로저)

  • 동작을 저장할 수 있다.
  • 변수/상수에 저장할 수 있다.
  • 파라미터로 전달할 수 있다.
  • 함수에서 반환할 수 있다. 
  • 타입을 가진다 = Function Type
  • 함수는 Closure의 한 종류(Named Closure) 이다.

 

+ Quiz / SayHello 함수의 Function Type은?

func sayHello(name: String) {

}

(String) -> ()
(String) -> Void

 

 

Higher Order Function (고차함수)

  • "함수를 파라미터로 받는 함수"

+ 아래 add 함수의 result 를 가지고 업그레이드 된 고차함수를 만들어보기! 

func add(first: Int, second: Int) {
	let result = first + second
}

 

+ completionHandler parameter 추가하기

func add(first: Int, second: Int, completionHandler: (Int) -> Void) {

	let result = first + second
	
	completionHandler(result) // result 값을 전달하며 호출됨
}

// completionHandler 에 우리가 할 동작을 전달
// 우리가 호출하면서 전달한 클로져가 add 함수 내부에서 호출된다.
add(first: 1,
		second: 2,
		completionHandler: { number in
		print("결과는 \(number)"입니다!)
})

 

 

+ closure parameter 이름 생략하기 ($0)

func add(first: Int, second: Int, completionHandler: (Int) -> Void) {

	let result = first + second
	
	completionHandler(result)
}

add(first: 1,
		second: 2,
		completionHandler: {
		print("결과는 \($0)"입니다!)
})

 

 

+ trailing closure 이름 생략하기 ($0)

add(first: 1, second: 2) { number in
	print("결과는 \(number)"입니다!)
}