하루를살자

Swift - Closure (2) : Trailing Closure 본문

Swift

Swift - Closure (2) : Trailing Closure

Kai1996 2022. 2. 27. 17:48

트레일링 클로저는 함수의 마지막 인자 값이 클로저일 때 인자값 형식으로 작성하는대신 함수 의 뒤에 꼬리처럼 붙일수 있는 문법을 뜻한다.

이때 클로저가 그 함수의 마지막 인자 값일때만 트레일링 클로저를 사용할수 있고, 인자 레이블을 생략한 상태로 쓸수있다.

  • 아래 함수 는 어떠한 프로그램을 num 번 만큼 실행하고 completion 클로저의 로직의 결과 값으로 false 가 나올시 그 프로그램은 종료 시키는 함수이다.
func run (num : Int , completion : (Int) -> (Bool) ) {
    for i in 1..<num {
        if completion(i) != true {exit(1)}
        print("\(i)번 실행 중.")
    }
}
  • 위 함수를 트레일링 클로저를 사용해서 호출 하면 아래와 같이 표현할수 있다.
run(num:5){ (number) in
    return number < 3 
}
//or
run(num:5){$0<3}

run (num:5){ ... } 에서 볼수 있듯이 인자값으로 사용되었던 클로저가 통째로 바깥으로 빼어진다음 run() 메소드의 뒤쪽에 꼬리처럼 달라붙은 것을 알 수 있다.

중요한건 트레일링 클로저는 반드시 함수의 마지막 인자가 클로저 일때만 사용가능하다. (여러개의 인자가 클로저일때도 마지막 클로저에만 적용가능)

'Swift' 카테고리의 다른 글

[Swift] LinkedList  (0) 2022.08.05
[Swift] Expansive DateFormatter : 어떻게 사용해야할까?  (0) 2022.06.09
Swift - Closure (1): 표현식  (0) 2022.02.27
Swift 고차함수  (0) 2022.02.05
Swift - Collection Types  (0) 2022.01.01
Comments