我有一个功能
func login<Bool> (parameters: [(String, Any)],
completion: @escaping (Bool) -> Void) {
//Do something
}
Run Code Online (Sandbox Code Playgroud)
每当我像这样调用完成处理程序时
completion(false)
Run Code Online (Sandbox Code Playgroud)
或者
completion(true)
Run Code Online (Sandbox Code Playgroud)
XCode 一直告诉我:“无法将类型 'Swift.Bool' 的值转换为预期的参数类型 'Bool'”
最终,我删除了函数开头的 ,错误消失了。我认为这是在声明函数的类型,但坦率地说,我不确定这意味着什么,或者尽管使用谷歌搜索,<> 做了什么。我确定它解释得很好,但我并没有通过谷歌搜索来理解这个概念。以及为什么 Swift.Bool 无法转换为 Bool。我发现有一个客观的 C 版本的 bool 并且我认为它可能是在要求这个,但这也不起作用。Bool 是什么意思?
该语法func login<Bool>定义了一个名为 的类型参数Bool。它与Swift.Bool. 这只是您定义的名称。这就像你声明了一个局部变量一样var Bool: String。您将有一个名为Bool实际上是字符串的变量。不要那样做。
如果您希望该值始终为 Bool,请删除类型参数。这不是通用的。
func login(parameters: [(String, Any)],
completion: @escaping (Bool) -> Void) {
Run Code Online (Sandbox Code Playgroud)
有关<...>语法和泛型的详细信息,请参阅The Swift Programming Language 中的泛型。
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |