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]()
但上面的emptyArray
有Array<Int>
类型,而equivalentEmptyArray
有前面例子中的[(Int)]
类型。 Array<Int>
只是[Int]
的完整形式,所以这不是一个真正的问题,除了后者与doc所说的类型不匹配。
注意:通过选项单击变量或选择变量并查看右侧菜单中的“快速帮助”检查器来查找类型。
答案
你是对的,[Int]
和[(Int)]
实际上表现完全相同(实际上它们是相同的)。
不幸的是,我不知道发生这种情况的确切原因,但是从Xcode 7 beta 5(可能是早期版本)开始,它只显示类型为[Int]
。
以上是关于Swift数组初始化程序语法类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章
调用数组中的初始化程序没有完全匹配(Swift/SwiftUI)