我开始学习swift是通过苹果公司提供的swift上的iBook-The swift Programming Language。这本书说要创建一个空字典,应该使用[:],就像声明数组为[]一样:

我声明一个空数组,如下所示:

let emptyArr = [] // or String[]()

但是在声明空字典时,我得到语法错误:

let emptyDict = [:]

如何声明一个空字典?


当前回答

var dictList = String: swift中字典的字符串 var arrSectionTitle =字符串数组在swift

其他回答

除非类型信息可用,否则不能使用[:]。

在这种情况下,你需要显式地提供它:

var dict = Dictionary<String, String>()

Var意味着它是可变的,所以你可以向它添加条目。 相反,如果你让它成为一个let,那么你就不能进一步修改它(let意味着常量)。

例如,如果可以推断类型信息,则可以使用[:]简写符号

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

在上一个例子中,通过第一行就知道字典的类型为dictionary <String, String>。注意,您不必显式地指定它,但它已经被推断出来了。

var parking = [Dictionary < String, Double >()]

^这将为[string:double]输入添加一个字典

它很方便你找路

var dict:Dictionary = [:]

Swift文档推荐用以下方式初始化一个空Dictionary:

var emptyDict = [String: String]()

当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示了初始化空Dictionary的不同方法。事实证明,实际上有很多方法可以做到这一点,尽管考虑到Swift推断类型的能力,有些方法有点冗余或过于冗长。

var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()

在你有一个空字典之后,你可以像这样添加一个键值对:

emptyDict["some key"] = "some value"

如果你想再次清空你的字典,你可以做以下事情:

emptyDict = [:]

类型仍然是<String, String>,因为这是它初始化的方式。

要用[:]也就是空字典字面量创建一个空字典,实际上需要首先提供上下文,就像键和值的类型一样。使用[:]创建空字典的正确方法是:

var dict: [String: Int] = [:]