我是Swift语言的初学者。
我如何使一个数组的精确副本?
我很难找到有关在Swift中复制数组的信息。
我试过使用.copy()
var originalArray = [1,2,3,4] var duplicateArray = originalArray.copy()
数组在Swift中有完整的语义,所以没有必要。
var duplicateArray = originalArray就是你需要的。
如果数组的内容是引用类型,那么是的,这将只复制指针到你的对象。要执行内容的深层副本,您将改为使用映射并执行每个实例的副本。对于符合NSCopying协议的Foundation类,可以使用copy()方法:
let x = [NSMutableArray(),NSMutableArray(),NSMutableArray()] let y = x let z = x.map { $0.copy() } x[0] === y[0] // true x[0] === z[0] // false
注意,这里有一些陷阱,Swift的值语义正在努力保护你,例如,因为NSArray表示一个不可变的数组,它的copy方法只是返回一个对它的引用,所以上面的测试会产生意想不到的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。