koe*_*oen 0 arrays xcode swift3
我正在尝试从另一个更改了某些属性的数组创建一个新数组。我遵循了这个线程中的答案:Using Map in Swift to Change Custom Struct Properties,但我没有让它工作,并且在我的 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)
Run Code Online (Sandbox Code Playgroud)
一旦我添加了代码的第二部分,我就会崩溃,崩溃日志很长(我不会在这里重现,因为它太大了)。所以它可能只是 Swift 3 和/或 Xcode beta 中的一个错误。
我的问题是,我的代码中是否有错误,我是否正确使用了地图?
根据SE-0003,var函数参数已从 Swift 3 中删除(另请参阅有关该主题的问答)。编译器崩溃而不是生成一条错误消息告诉您这一事实是一个错误——编译器不应该崩溃。
解决方案只是简单地创建您自己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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |