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

...そしてただし拡張子や機能をされて生成した値

を設定この場合の最適なオプションです。

希望これはここ:)

関連する問題