gpt4 book ai didi

swift - 试图理解结构集合的映射函数

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

请有人像我 5 岁一样解释以下代码。我知道它在做什么,将 Person 类型的结构数组中的所有 isLocked Bools 更改为 true。我只是在给自己“讲故事”语法时遇到了麻烦。

people = people.map({
(p) -> Person in
var mod = p
mod.isLocked = true
return mod
})

谢谢。

最佳答案

map 允许您通过对所有元素应用一些转换闭包从现有数组创建新数组。不幸的是,在这个例子中,你的闭包返回了它所需要的相同元素,所以如果你的 Person 是一个 class(而不是一个 struct ), map 是完全不必要的,上面的代码将简单地做同样的事情:

people.forEach { $0.isLocked = true }

如果 Person 是一个 struct 而不是 class,OTOH,那么 map 就有意义了,因为您需要复制每个对象才能对其进行修改。

struct 的情况下,map 创建一个新数组,其中包含数组中每个 Person 结构的副本,每个将其 isLocked 属性设置为 true 进行复制:

people = people.map {
(p) -> Person in
var mod = p // make a copy of each Person, store it in 'mod'
mod.isLocked = true // change the isLocked property of the copy to true
return mod // return the modified copy
}

关于swift - 试图理解结构集合的映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47215792/

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