初始化字典和用Swift声明有什么区别?
不确定我的标题是否准确。请评论是否会更新 在一种方法中,我只是创建字典并用 在另一个示例中,我创建它并立即用键值对填充它 有什么区别?一个比另一个好吗初始化字典和用Swift声明有什么区别?,swift,Swift,不确定我的标题是否准确。请评论是否会更新 在一种方法中,我只是创建字典并用 在另一个示例中,我创建它并立即用键值对填充它 有什么区别?一个比另一个好吗 //initializing dictionary var airPortCodesInitialize = [Int: String]() //vs declaring var airPortCodes: [String: String] = ["SLC": "Salt Lake City", "LAX": "Los Angeles"] 在
//initializing dictionary
var airPortCodesInitialize = [Int: String]()
//vs declaring
var airPortCodes: [String: String] = ["SLC": "Salt Lake City", "LAX": "Los Angeles"]
在这两种情况下,您都在声明字典并初始化它。唯一的区别是第一行创建一个空字典,第二行创建一个充满键值对的字典 单个声明如下所示:
var myDictionary: [String: String]
我想你误解了什么是声明,所以对于这个答案的其余部分,我将比较上面的一行和你的第一行
有什么区别
单个声明不给变量任何值,因此,如果在声明后立即尝试使用myDictionary而不初始化它,编译器会给您一个错误:
print(myDictionary["Hello"]) // error
一个比另一个好吗
//initializing dictionary
var airPortCodesInitialize = [Int: String]()
//vs declaring
var airPortCodes: [String: String] = ["SLC": "Salt Lake City", "LAX": "Los Angeles"]
大多数情况下,您应该像在中一样将初始化和声明放在同一行
var airPortCodesInitialize = [Int: String]()
这更具可读性
但有时,您可能需要根据值为常量字典设置不同的初始值。然后,您必须将声明和初始化分开:
let myConstantDict: [String: String]
switch something {
case .foo:
myConstantDict = ...
case .bar:
myConstantDict = ...
}
它完全依赖于您的需求,但是没有区别,这是两种不同的语法,就像我们在其他编程语言中所做的那样,如ObjtC、C、C++。这两种形式都声明和初始化字典,一旦空,一次使用几个默认的键值对。旁注:一般来说,除非编译器告诉你,否则你不应该注释类型。简而言之,=左边的部分就是声明。=右边的部分是初始化。尽管使用Swift,您可以说从=右侧的类型推断可以被视为声明的一部分。回答很好,非常清楚,您帮助我找到了一个更好的方向。谢谢