2017-04-20 138 views
-2

比方说,我们有一个dictioniary:为什么字典有.updateValue()?

var myDict = [1: "firstValue", 2: "secondValue"] 

在我看来是,想用钥匙1

myDict.updateValue("diffFirstValue", forKey: 1) 

更改值时具有完全相同的功能

myDict[1] = "diffFirstValue" 

那么为什么.updateValue()存在字典?

+0

这些灵活的语言功能。 – ankit

+0

如果你阅读文档,你可能会注意到'updateValue'和'myDict [key] = ...'的功能是不一样的。下标运算符是'updateValue(forKey:)'和'removeValue(forKey:)'的组合。如果您的字典中包含可选类型的值(我不建议使用这些字典),那么您会很快注意到差异。 – Sulthan

回答

1

按照official Apple reference,它返回被替换或者为零,如果添加了一个新值的值:

使用此方法,而不是基于密钥的下标时,你需要知道是否新的价值取代了的现有密钥

值替换值

var dictionary = ["A": 1, "B": 2] 

if let oldValue = dictionary.updateValue(100, forKey: "A") { 
    print("Old value: \(oldValue)") 
} else { 
    print("New value added") 
} 

它打印: “旧值:1

添加值

var dictionary = ["A": 1, "B": 2] 

if let oldValue = dictionary.updateValue(100, forKey: "C") { 
    print("Old value: \(oldValue)") 
} else { 
    print("New value added") 
} 

它打印出: “新的增值