2016-12-06 50 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 

...然后设定一个值

但是生成的扩展或功能在这种情况下你最好的选择。

希望这有助于清楚的事情了:)