我创建了一个带有完成处理程序的函数。有时我需要使用完成块,有时不需要。
这是函数:
func numberCheck(number: String , completion : @escaping (Bool)->()){
//some task do here
completion(true)
}
Run Code Online (Sandbox Code Playgroud)
用:
numberCheck(number: "77" , completion: {_ in
//some task do here
})
Run Code Online (Sandbox Code Playgroud)
但我想让它完成块为零:
numberCheck(number: "77" , completion: nil)
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:
Nil 与预期的参数类型 '(Bool) -> ()' 不兼容
使关闭可选
func numberCheck(number: String , completion : @escaping ((Bool)->())?){
Run Code Online (Sandbox Code Playgroud)
或者为了更好的可读性
typealias CheckResult = (Bool)->()
func numberCheck(number: String , completion : @escaping CheckResult? ){
Run Code Online (Sandbox Code Playgroud)
但是你必须在函数体中写
completion?(true)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1932 次 |
最近记录: |