Arrays 使用映射将结构属性更改为新数组
我正在尝试从另一个数组创建一个新数组,并更改了某些属性。我在这个线程中遵循了答案:,但我没有让它工作,在我的操场上发生了碰撞(XCode 8beta6) 下面是一个简单的例子:Arrays 使用映射将结构属性更改为新数组,arrays,xcode,swift3,Arrays,Xcode,Swift3,我正在尝试从另一个数组创建一个新数组,并更改了某些属性。我在这个线程中遵循了答案:,但我没有让它工作,在我的操场上发生了碰撞(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) // cr
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)
struct-Day{
变量日:字符串
}
变量星期一:[天]=[]
因为我在0。。日复一日
d、 day=“星期二”
返回d
}
印刷(星期二)
一旦我添加了代码的第二部分,我就得到了一个崩溃,有一个很长的崩溃日志(因为它太大了,所以我不会在这里重现)。所以它可能只是Swift 3和/或Xcode测试版中的一个bug
我的问题是,我的代码中是否有错误,我是否正确使用了地图?根据,var
功能参数已从Swift 3中删除(另请参见主题中的)。编译器崩溃而不是生成错误消息来告诉您这一点,这是一个bug——编译器永远不应该崩溃
解决方案就是创建自己的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
}
根据,var
功能参数已从Swift 3中删除(另请参见主题中的)。编译器崩溃而不是生成错误消息来告诉您这一点,这是一个bug——编译器永远不应该崩溃
解决方案就是创建自己的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
}
如果还没有,您应该为编译器崩溃提交一份bug报告,因为bug报告已经提交!如果还没有,您应该为编译器崩溃提交一份bug报告,因为bug报告已经提交!