2017-12-21 5 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キーワードを削除し、デフォルト値を指定してクロージャをオプションにします。この方法では、オプションのクロージャは事実上エスケープしています。

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)") 
} 
関連する問題