无法调用非功能类型“布尔”的值

时间:2018-12-04 10:51:43

标签: swift

下面的代码无法编译

  

无法调用非功能类型“布尔”的值

当名称相同时,是否可以区分方法闭包参数和局部变量?

func methodA(message: String, success: @escaping () -> Void) {
    let success = true
    if success {
        print(message)
    }
    success()
}

1 个答案:

答案 0 :(得分:1)

您不能这样做,因为传递给函数的所有变量都是函数的变量,因此无法区分成功函数和成功变量。

更快捷的方法是将名称更改为完成并返回布尔变量,以表示成功或失败,如下所示:

func methodA(message: String, completion: @escaping (_ success: Bool) -> Void) {
    let success = true
    if success {
        print(message)
    }
    completion(success)
}