Swift - 声明没有数据类型的空集合?

问题描述

你能在不知道数据类型的情况下在 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]()

在您不知道值的数据类型或具有不同数据类型的大多数情况下都可以正常工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...