【问题标题】:Cannot call value of non-function type 'Bool'无法调用非函数类型“Bool”的值
【发布时间】:2019-05-05 18:46:17
【问题描述】:

下面的代码无法编译

不能调用非函数类型'Bool'的值

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

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

【问题讨论】:

  • 没办法区分。给另一个名字。

标签: swift


【解决方案1】:

你不能这样做,因为你传递给函数的所有变量都是函数的变量,所以没有办法区分成功函数和成功变量。

更快捷的方法是将名称更改为完成并返回一个 bool var 指示成功或失败,如下所示:

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

【讨论】:

  • completion 带有“e”似乎更好;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 2020-02-01
  • 2021-01-15
  • 2021-03-30
  • 2016-03-10
  • 2016-09-26
相关资源
最近更新 更多