2016-12-06 47 views
2

我發現自己開始想是這樣的:Swift標準字典是否具有獲取或設置功能?

extension Dictionary { 
    mutating func get(_ key: Key, backup: Value) -> Value { 
     if let stored = self[key] { 
      return stored 
     } else { 
      self[key] = backup 
      return backup 
     } 
    } 
} 

但我的經驗,斯威夫特留下了這樣的事情,因爲它有一個替代(意)的方式來做到這一點。我還沒有在文檔中找到這樣的方法。 我錯過了這個功能,還是應該創建它?另外,如果他們離開它,我不應該創建它,爲什麼?

+2

類似的解決方案在這裏:斯威夫特字典默認值(http://stackoverflow.com/questions/32415188/swift-dictionary-default-value)。 –

+0

你沒有錯過一個函數:)創建某種擴展或函數通常是個好主意(請參閱我的答案)。 – GJZ

回答

2

不,它沒有這樣的功能。在這種情況下創建擴展是很好的。

0

在Swift中沒有像這樣的特定函數。

正如我敢肯定你知道,你可以快速查詢字典:

var stringsAsInts: [String:Int] = [ 
"zero" : 0, 
"one" : 1, 
"two" : 2, 
"three" : 3, 
"four" : 4, 
"five" : 5, 
"six" : 6, 
"seven" : 7, 
"eight" : 8, 
"nine" : 9 
] 

stringsAsInts["zero"] // Optional(0) 
stringsAsInts["three"] // Optional(3) 
stringsAsInts["ten"] // nil 

// Unwaraping the optional using optional binding 
if let twoAsInt = stringsAsInts["two"] { 
print(twoAsInt) // 2 
} 

// Unwaraping the optional using the forced value operator (!) 
stringsAsInts["one"]! // 1 

...然後設定一個值

但是生成的擴展或功能在這種情況下你最好的選擇。

希望這有助於清楚的事情了:)

相關問題