使用 map 将 struct 属性 更改为新数组
Use map to change struct property into new array
我正在尝试从另一个数组创建一个新数组,并更改了一些 属性。我遵循了此线程中的答案:,但我没有让它工作,并在我的 PlayGround (XCode 8beta6)
中崩溃
这是一个简单的例子:
struct Day {
var day: String
}
var mondays: [Day] = []
for i in 0..<10 {
let day = Day(day: "Monday")
mondays.append(day)
}
print(mondays)
// create a new array where all days have the day property set to 'Tuesday'
let tuesdays = mondays.map { (var d) -> Day in
d.day = "Tuesday"
return d
}
print(tuesdays)
一旦我添加了代码的第二部分,我就崩溃了,崩溃日志很长(我不会在这里重现,因为它太大了)。所以它可能只是 Swift 3 and/or Xcode beta.
中的错误
我的问题是,我的代码有没有错误,我使用的地图是否正确?
根据 SE-0003, var
function parameters have been removed from Swift 3 (also see 主题)。编译器崩溃而不是生成错误消息告诉您这一事实是一个错误 – 编译器永远不应该崩溃。
解决方案就是创建您自己的 map(_:)
函数参数的可变副本。
let tuesdays = mondays.map { (d) -> Day in
var d = d // mutable copy of d that shadows the immutable function argument d
d.day = "Tuesday"
return d
}
我正在尝试从另一个数组创建一个新数组,并更改了一些 属性。我遵循了此线程中的答案:
这是一个简单的例子:
struct Day {
var day: String
}
var mondays: [Day] = []
for i in 0..<10 {
let day = Day(day: "Monday")
mondays.append(day)
}
print(mondays)
// create a new array where all days have the day property set to 'Tuesday'
let tuesdays = mondays.map { (var d) -> Day in
d.day = "Tuesday"
return d
}
print(tuesdays)
一旦我添加了代码的第二部分,我就崩溃了,崩溃日志很长(我不会在这里重现,因为它太大了)。所以它可能只是 Swift 3 and/or Xcode beta.
中的错误我的问题是,我的代码有没有错误,我使用的地图是否正确?
根据 SE-0003, var
function parameters have been removed from Swift 3 (also see
解决方案就是创建您自己的 map(_:)
函数参数的可变副本。
let tuesdays = mondays.map { (d) -> Day in
var d = d // mutable copy of d that shadows the immutable function argument d
d.day = "Tuesday"
return d
}