gpt4 book ai didi

arrays - 使用 nil 初始值设定项将 Swift 数组缩减为 [Int :Int?] 为空

转载 作者:行者123 更新时间:2023-11-28 05:38:00 25 4
gpt4 key购买 nike

为什么将数组缩减为以键为数组值、值为 nil 的散列会得到空结果?

[1,2,3].reduce(into: [Int:Int?](), { $0[$1] = nil })
[1,2,3].reduce(into: [Int:Int?](), { $0[$1] = 1 })

这两个应该有 3 个条目,对吧?

最佳答案

在 Swift 中,像您在问题中所做的那样将字典值设置为 nil 会将该值从字典中完全删除。然而,对此有一些奇怪的警告。

在您的示例中,您使用类型为 [Int:Int?]Dictionary:

var dictionary: [Int:Int?] = [1: 1, 2: 1, 3: 1]

通过以下方式将值设置为 nil 将其删除:

dictionary[1] = nil

将类型为 Int? 的值设置为 nil 将分配给 nil:

dictionary[1] = nil as Int?

同样地,使用 updateValue(_:forKey:) 函数也会做同样的事情:

dictionary.updateValue(nil, forKey: 1)

执行这些操作中的任何一个后打印字典将显示以下内容:

[1: nil, 2: Optional(1), 3: Optional(1)]

所以这个行为有点奇怪,但有可能达到你想要的结果。我真的不推荐它,因为它很不自然;不过,这是可能的。

关于arrays - 使用 nil 初始值设定项将 Swift 数组缩减为 [Int :Int?] 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com