我定义了以下结构.
struct Person {
var firstName :String
var lastName :String
var active :Bool
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个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)
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用下面的代码将活动属性更改为false:
let inActionPersons = persons.map { (var p) in
p.active = false
return p
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Cannot invoke map with an argument list of type @noescape (Person) throws
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
解:
看起来Swift无法推断类型有时候有点蹩脚!这是解决方案:
let a = persons.map { (var p) -> …Run Code Online (Sandbox Code Playgroud)