来自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]()
但上面的emptyArray
类型为Array<Int>
,而equivalentEmptyArray
的类型为[(Int)]
,如上例所示。 Array<Int>
只是[Int]
的完整形式,所以这不是一个真正的问题,除了后者与文档所说的类型不匹配。
注意:通过选项单击变量或选择变量并查看右侧菜单中的“快速帮助”检查器来查找类型。
答案 0 :(得分:1)
你是对的,[Int]
和[(Int)]
实际上表现完全相同(实际上它们是相同的)。
不幸的是,我不知道发生这种情况的确切原因,但从Xcode 7 beta 5(可能是早期版本)开始,它只显示类型为[Int]
。