勝手にnilが無視される挙動を使って安全?
let hoge: String? = nil
let foo: String? = "foo"
var dict = [String: Any]()
if let hoge = hoge {
dict["hoge"] = hoge
}
if let foo = foo {
dict["foo"] = foo
}
print(dict) // => ["foo": "foo"]
上記のような
オプショナルな値
が入っていた場合のみアンラップ
してディクショナリ
に登録していく処理をもっとシンプルにしたいと考え、いろいろ試していると下記のような挙動を発見しました。
let hoge: String? = nil
let foo: String? = "foo"
var dict = [String: Any]()
dict["hoge"] = hoge
dict["foo"] = foo
print(dict) // => ["foo": "foo"]
nil
である dict["hoge"] = hoge
の処理が無視されているようです。
これは安全な書き方なのでしょうか?
https://developer.apple.com/documentation/swift/dictionary
Update an existing value by assigning a new value to a key that already exists in the dictionary. If you assign nil to an existing key, the key and its associated value are removed.
によるとnilの代入は削除を意味しているようです。
削除ではない今回のような初期化ぽい使い方をしても問題ないでしょうか?