问题描述
你能在不知道数据类型的情况下在 Swift 中声明一个空集合(数组、集合、字典)吗?我正在关注 Swift 网站的 100 天,但它没有提到如何声明一个空集合。我敢肯定,在某些情况下,您不知道要填充到此集合中的数据类型对吗?
例如,如果我想定义一个空字典:
var emptyDictionary = [String: String]()
但是如果我把它改成
var emptyDictionary = [Any: Any]()
解决方法
类型为 Any
的数组可以编译;例如
let array = [Any]()
编译没有错误。但是,由于结构的性质,字典的键必须符合 Hashable
。因此,通过将键设为 Hashable
,您可以创建一个“any”类型的字典。
struct Foo<T: Hashable> {
let dict = [T: Any]()
}
但是,将 Any
用作密钥并没有多大意义。使用类似
let dict = [String: Any]()
在您不知道值的数据类型或具有不同数据类型的大多数情况下都可以正常工作。