Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用映射将结构属性更改为新数组_Arrays_Xcode_Swift3 - Fatal编程技术网

Arrays 使用映射将结构属性更改为新数组

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

我正在尝试从另一个数组创建一个新数组,并更改了某些属性。我在这个线程中遵循了答案:,但我没有让它工作,在我的操场上发生了碰撞(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)
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报告已经提交!