开发者社区> 问答> 正文

如何精确复制数组副本?

我将如何精确复制数组?

我很难找到有关在Swift中复制数组的信息。

我尝试使用 .copy()

var originalArray = [1, 2, 3, 4] var duplicateArray = originalArray.copy() 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 13:20:53 470 0
1 条回答
写回答
取消 提交回答
  • 数组在Swift中具有全值语义,因此不需要任何花哨的东西。

    var duplicateArray = originalArray 是你所需要的全部。

    如果数组的内容是引用类型,则可以,这只会将指针复制到您的对象。要执行内容的深层副本,您将改为使用map并执行每个实例的副本。对于符合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方法仅返回对其自身的引用,因此上面的测试将产生意外的结果。

    2020-02-08 13:21:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载