Swift数组初始化程序语法类型不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift数组初始化程序语法类型不匹配相关的知识,希望对你有一定的参考价值。

来自Swift编程指南:

您可以使用初始化语法创建某个类型的空数组:

var someInts = [Int]()
println("someInts is of type [Int] with (someInts.count) items.")
// prints "someInts is of type [Int] with 0 items."

请注意,someInts变量的类型从初始化程序的类型推断为[Int]

但是如果你实际上将它原样复制到XCode中,并检查someInts的类型,你会得到[(Int)],这是一个单元素Int元组的数组。为什么会出现这种差异?您还可以按如下方式初始化数组:

var someInts: [Int] = []

具有正确的类型。

实际上这些类型看起来行为相同,但我想弄清楚这里发生了什么。

in the reference doc for Array也说:

使用此初始值设定项创建数组:

var emptyArray = Array<Int>() 

相当于使用方便语法:

var equivalentEmptyArray = [Int]()

但上面的emptyArrayArray<Int>类型,而equivalentEmptyArray有前面例子中的[(Int)]类型。 Array<Int>只是[Int]的完整形式,所以这不是一个真正的问题,除了后者与doc所说的类型不匹配。

注意:通过选项单击变量或选择变量并查看右侧菜单中的“快速帮助”检查器来查找类型。

答案

你是对的,[Int][(Int)]实际上表现完全相同(实际上它们是相同的)。

不幸的是,我不知道发生这种情况的确切原因,但是从Xcode 7 beta 5(可能是早期版本)开始,它只显示类型为[Int]

以上是关于Swift数组初始化程序语法类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

调用数组中的初始化程序没有完全匹配(Swift/SwiftUI)

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

NSArray元素的原因无法与Swift数组元素类型匹配

转换为 Swift3 错误

Swift语法[变量常亮区间运算符字典]

swift学习之数组