我如何制作数组的精确副本?
我很难找到有关在 Swift 中复制数组的信息。
我尝试使用.copy()
var originalArray = [1, 2, 3, 4]
var duplicateArray = originalArray.copy()
Swift 中的数组具有完整的值语义,因此不需要任何花哨的东西。
var duplicateArray = originalArray
是你所需要的全部。
如果数组的内容是引用类型,那么是的,这只会将指针复制到对象。要执行内容的深层复制,您可以使用map
并执行每个实例的副本。对于符合以下标准的基础课程NSCopying
协议,您可以使用copy()
method:
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
方法只返回对其自身的引用,因此上面的测试会产生意外的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)