2017-04-20 133 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") 
} 

它打印出: 「新的增值