Swift.Bool不是Bool吗?
我有一个功能
func login<Bool> (parameters: [(String, Any)],
completion: @escaping (Bool) -> Void) {
//Do something
}
每当我像这样调用完成处理程序时
completion(false)
或者
completion(true)
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) {
有关<...>语法和泛型的详细信息,请参阅The Swift Programming Language 中的泛型。
- @Timothy 你应该尽快接受罗布的回答。它像往常一样出色(投票)。一旦您拥有足够的声誉,请考虑为这样的高质量答案投票。
- 我刚刚做到了。不幸的是,我还不太知道如何提出好问题,所以我的声誉有点停滞不前,但这就是目标。谢谢邓肯的建议。能够进入这个平台,我感到非常幸运。