为什么将数组简化为带有键作为数组值和值为nil的散列会产生空结果?
[1,2,3].reduce(into: [Int:Int?](), { $0[$1] = nil })
[1,2,3].reduce(into: [Int:Int?](), { $0[$1] = 1 })
这两个都应该有3个条目,对不对?
在Swift中,将字典值设置为nil
您在问题中所做的一样,会从字典中完全删除该值。但是,对此有一些奇怪的警告。
在您的示例中,您使用一个Dictionary
with类型[Int:Int?]
:
var dictionary: [Int:Int?] = [1: 1, 2: 1, 3: 1]
nil
通过以下方式将值设置为可以将其删除:
dictionary[1] = nil
将值设置为nil
typeInt?
将nil
改为分配:
dictionary[1] = nil as Int?
同样,使用该updateValue(_:forKey:)
函数将执行以下操作:
dictionary.updateValue(nil, forKey: 1)
执行这些操作之一后,打印字典将显示以下内容:
[1: nil, 2: Optional(1), 3: Optional(1)]
因此,该行为有些奇怪,但可以实现您预期的结果。我真的不推荐它,因为它很不自然。不过有可能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句