-
클로저 (1급 객체)Swift/swift 문법 2023. 4. 18. 19:03
: 보통은 익명 함수를 뜻함. 일반적인 함수는 named closure이다.
클로저는 익명함수지만 1급 객체 함수의 특성을 지닌다.
-> 1급 객체*의 특성
: 함수를 타입으로 인식
1. 함수를 변수에 할당할 수 있음
2. 어떤 함수를 호출할 때 파라미터로서 전달할 수 있음
3. 함수에서 함수를 반환할 수 있음.
표현식
var closure : (parameter) -> return_type = {(value : type) -> return_type in //code } //ex // "Hello World"를 출력하는 익명함수 var str_closure : () -> String = { () -> String in return "Hello World" } var str_closure = {() -> String in return "Hello World" }
탈출 클로저 (@escaping)
클로저의 실행이 본래 함수를 벗어나서도 실행되도록 하는 키워드
언제 사용하는가?
- 내부 클로저를 외부 변수에 저장
- GCD (비동기 코드 사용)
func something2(a: Int, mainwork2: @escaping () -> () ) { print(a) DispatchQueue.main.async { mainwork2() } print("종료") }
클로저는 언제 사용하는가?
: 함수를 사용할 때.. 이외에도 콜백함수로 주로 사용 된다.
//⭐️함수 실행 시⭐️ 실행될 클로저를 정의해주어야함 func something(a: Int, mainwork1: @escaping () -> () ) { print(a) DispatchQueue.main.async { mainwork1() } print("종료") } //실행 시에 mainwork1 클로저 실행 내용 서술 something(a: 1) { print("mainwork1 클로저의 실행입니다. ") }
'Swift > swift 문법' 카테고리의 다른 글
클래스와 구조체 (0) 2023.04.22 메모리 안전 (0) 2023.04.21 리턴형이 never 타입인 함수 (0) 2023.04.16 강한참조 사이클 - weak vs unowned (0) 2023.04.11 hashable 프로토콜 (0) 2023.04.09