- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我很好奇为什么这段代码在 Playground 中能正常工作:
var dict = [String: String]()
dict["key"] = nil
let value = dict["key"]
我们可以看到我用非可选值声明了 Dictionary,在 Playground 中检查它之后它的工作方式类似于声明为 [String: String?]
我的问题是在声明为 [String: String]
和 [String: String?]
?
最佳答案
dict["key"] = nil
是从字典中删除键的简写(与使用 dict.removeValue(forKey: "key")
相同) .如果 “key”
键下有一个值,则在此行之后,整个条目将从字典中删除(包括键和值)。
阅读下标docs了解更多:
If you assign nil as the value for the given key, the dictionary removes that key and its associated value.
In the following example, the key-value pair for the key "Aquamarine" is removed from the dictionary by assigning nil to the key-based subscript.
hues["Aquamarine"] = nil
print(hues)
// Prints "["Coral": 18, "Heliotrope": 296, "Cerise": 330]"
let value = dict["key"]
获取键的值,根据定义返回 nil
如果没有给定键的条目(这是在你的情况下)。
根据 docs ,下标返回值,如果键不在字典中,则返回 nil:
The value associated with key if key is in the dictionary; otherwise, nil.
关于swift - 如何将 'nil' 设置为 [String : String] dictionary is valid? 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49772279/
我是一名优秀的程序员,十分优秀!