在Swift中使用Map更改自定义结构属性

我定义了以下结构。

struct Person {

var firstName :String

var lastName :String

var active :Bool

}

我创建了一个Person集合,如下所示:

var persons :[Person] = []

for var i = 1; i<=10; i++ {

var person = Person(firstName: "John \(i)", lastName: "Doe \(i)", active: true)

persons.append(person)

}

现在,我尝试使用以下代码将active属性更改为false:

let inActionPersons = persons.map { (var p) in

p.active = false

return p

}

但我收到以下错误:

Cannot invoke map with an argument list of type @noescape (Person) throws

有任何想法吗?

解:

看起来Swift有时无法推断类型,这有点la脚!解决方法如下:

let a = persons.map { (var p) -> Person in

p.active = false

return p

}

这不起作用:

let a = persons.map { p in

var p1 = p

p1.active = false

return p1

}

回答:

当使用方括号作为参数时var,必须将返回类型也放入:

let inActionPersons = persons.map { (var p) -> Person in

p.active = false

return p

}

以上是 在Swift中使用Map更改自定义结构属性 的全部内容, 来源链接: utcz.com/qa/403450.html

回到顶部