你能在不知道其数据类型的情况下在Swift中声明一个空集合(array, set, dictionary)吗?我正在关注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]()
在大多数情况下,当您不知道值的数据类型或具有不同的数据类型时,可以很好地工作。