初始化字典和在Swift中声明有什么区别?

时间:2017-09-13 06:33:41

标签: swift

不确定我的标题是否准确。请评论是否会更新。

在一种方法中,我只需创建字典并使用()

进行初始化

在另一个我创建它并立即用键值对填充它。

有什么区别?有人优先考虑另一个吗?

//initializing dictionary
var airPortCodesInitialize = [Int: String]()

//vs declaring
var airPortCodes: [String: String] = ["SLC": "Salt Lake City", "LAX": "Los Angeles"]

1 个答案:

答案 0 :(得分:1)

在这两种情况下,您都要声明字典并对其进行初始化。唯一的区别是第一行创建一个空字典,第二行创建一个填充键值对的字典。

单个声明如下:

var myDictionary: [String: String]

我认为你误解了什么声明,所以对于这个答案的其余部分,我将比较上面的行和你的第一行。

  

有什么区别?

单个声明给变量没有值,所以如果你在声明之后立即尝试使用myDictionary而没有初始化它,编译器会给你一个错误:

print(myDictionary["Hello"]) // error
  

是否优先考虑另一个?

大多数情况下,您应该像在

中那样将初始化和声明放在同一行
var airPortCodesInitialize = [Int: String]()

这更具可读性。

有时候,根据值,您可能需要不同字典的初始值。然后你必须将声明和初始化分开:

let myConstantDict: [String: String]
switch something {
case .foo:
    myConstantDict = ...
case .bar:
    myConstantDict = ...
}