下面的代码无法编译
无法调用非功能类型“布尔”的值
当名称相同时,是否可以区分方法闭包参数和局部变量?
func methodA(message: String, success: @escaping () -> Void) {
let success = true
if success {
print(message)
}
success()
}
答案 0 :(得分:1)
您不能这样做,因为传递给函数的所有变量都是函数的变量,因此无法区分成功函数和成功变量。
更快捷的方法是将名称更改为完成并返回布尔变量,以表示成功或失败,如下所示:
func methodA(message: String, completion: @escaping (_ success: Bool) -> Void) {
let success = true
if success {
print(message)
}
completion(success)
}