[Swift] 클로저 표현식

Boogios·2023년 6월 2일
0
post-thumbnail

클로저 표현식

	let plus = { (_ num1: Int, _ num2: Int) -> Int in
    	return num1 * num2 // 클로저 표현식
    }
    
    let result = plus(3,5) // 이렇게 사용함!
    
{ (매개변수들) -> 반환 타입 in 
	return ~~
}

이런 형식으로 클로저를 표현함
in 키워드는 다음부터가 클로저 표현식 시작이다 라는 의미임

	let sayHi = { print("Hello, KeeN") }

매개변수, 반환타입 모두 생략 가능하면 위와 같이 생략 가능
() -> Void 인 경우 위와 같이 생략한 것임

함수는 이름이 있는 클로저 표현식이라고 생각하면 편함

주로 사용하는 상황

비동기 메서드 호출에 대한 완료 핸들러를 선언할 때 사용함
-> 백그라운드에서 작업을 해야하는 경우 운영체제에 요청을 해야할 때 사용함

시스템이 앱한테 작업 완료됐다고 알림 -> 완료 핸들러 호출 -> 결과 반환
완료 핸들러는 보통 completion handler 라고 부름
completion handler 안에는 클로저 표현식이 들어가야 함

	alarm.requestAccess(to: .reminder, completion: { (granted: Bool,error: Error?) -> Void in
    	if granted { // completion handler 부분에 클로져 표현식의 형태로 구현
        	print(error!.localizedDescription)
        }
    })

requestAccess(to:) 메서드가 호출된 후 완료가 되면 completion 부분이 실행됨

	alarm.requestAccess(to: .reminder, completion: { (granted, error) in
    	if granted { // completion handler 부분에 클로져 표현식의 형태로 구현
        	print(error!.localizedDescription)
        }
    })

이렇게 생략해도 유추가 가능함

클로저(closure)와 클로저 표현식(closure expression)

클로저는 함수나 클로저 표현식과 같은 독립적인 코드 블록과 코드 블록 주변에 있는 하나 이상의 변수결합된 것을 말함

profile
iOS Developer

0개의 댓글