来自Swift编程指南:
可以使用初始值设定项语法创建特定类型的空数组:
var someInts = [Int]()
println("someInts is of type [Int] with \(someInts.count) items.")
// prints "someInts is of type [Int] with 0 items."
注意,
someInts
变量的类型是从初始值设定项的类型推断出来的。但是,如果您实际将其按原样复制到XCode中,并检查
[Int]
的类型,就会得到someInts
,这是一个由单个元素[(Int)]
元组组成的数组。为什么会有这种差异?还可以按如下方式初始化数组:var someInts: [Int] = []
那是正确的类型。
实际上,这些人的行为似乎是一样的,但我想弄清楚这里发生了什么。
它还说:
使用此初始值设定项创建数组:
var emptyArray = Array<Int>()
相当于使用方便语法:
var equivalentEmptyArray = [Int]()
但上面的
Int
具有emptyArray
类型,而Array<Int>
具有equivalentEmptyArray
类型,如前一示例所示。[(Int)]
只是Array<Int>
的完整形式,所以这并不是真正的问题,只是后者与文档所说的类型不匹配。注意:通过在变量上单击选项或选择变量并在右侧菜单中的快速帮助检查器中查找类型。
最佳答案
你说得对,[Int]
和[(Int)]
实际上表现完全一样(事实上他们是一样的)。
不幸的是,我不知道发生这种情况的确切原因,但从xcode7beta5(可能更早的版本)开始,它只显示类型为[Int]
。
关于arrays - Swift数组初始化器语法类型不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31890010/