请有人解释下面的代码,例如我5.我知道它在做什么,在Person
类型的结构数组中将所有isLocked Bools更改为true。我只是在讲故事"对我自己的语法。
people = people.map({
(p) -> Person in
var mod = p
mod.isLocked = true
return mod
})
感谢。
答案 0 :(得分:3)
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
}