2017-12-21 1 views
-2

완료 핸들러로 함수를 만들고 싶습니다. 그래서 핸들러를 만들어서 nil으로 전달할 수 있습니다.nil 값을 가진 완료 핸들러

func animate(completion: @escaping((Bool) ->()) { 
    //Do stuff 
    completion(true) 
} 

내가 필요하지 않을 때처럼, nil을 전달 할 수 있도록 메이크업을 완료 핸들러를 만들 싶습니다

Nil is not compatible with expected argument type '(Bool?) ->()

: 그것은 &을 작동하지 않습니다

animate(completion: nil) 

나는 오류

. 이 일을 어떻게 도와 주실 수 있습니까?

+0

폐쇄 다른 인수 유형으로 처리 할 수 ​​있으며, 따라서 선택 할 수있다. –

답변

0

@escaping 키워드를 제거하고 기본값을 지정하여 클로저를 선택적으로 만듭니다. 선택적 closure de facto는 이러한 방식으로 도주하고있다.

func animate(_ completion: ((Bool) ->())? = nil) { 
    //Do stuff 
    completion?(true) 
} 

가능한 용도 : 후행 폐쇄로

animate({ value in 
    print("Completion value: \(value)") 
}) 
animate(nil) 
animate() // pass nothing, because default value is nil 

: 빠른 함수 인수에

animate() { value in 
    print("Completion value: \(value)") 
} 
관련 문제