15.3 Swift集合类的拷贝

/**

集合类的拷贝操作

*/

var array: Array<Int> = [1,2,3]

var array1 = array

/**

public struct Array<Element>

我们点击安住Command 点击String可以看到是 结构体类型,值类型

值类型的赋值操作是深拷贝,

*/

array1 += [4,5,6]

print("array==\(array)")

print("array1==\(array1)")

/**

array==[1,2,3]

array1==[1,3,4,5,6]

我们可以看到改变array1后,array并没有被改变啊。

所以上面是深拷贝。

*/

var dict: Dictionary<Int,String> = [1 : "a",2 : "b"]

var dict1 = dict

/**

public struct Dictionary<Key : Hashable,Value> : Collection

我们点击安住Command 点击Dictionary可以看到是 结构体类型,值类型

*/

print("------------------------>")

dict1[3] = "c"

print("dict1==\(dict1)")

print("dict==\(dict)")

/**

dict1==[2: "b",3: "c",1: "a"]

dict==[2: "b",0)"> 我们可以看到改变dict1后,dict并没有被改变啊。

*/

print("------------------------>")


var ocArray: NSMutableArray = NSMutableArray.init(array: [1,3])

/**

open class NSMutableArray : NSArray

我们点击安住Command 点击NSMutableArray可以看到是 class类型,引用类型

类,引用类型 的赋值操作是浅拷贝

*/


var ocArray1 = ocArray

ocArray1.add(7)

print("ocArray1==\(ocArray1)")

print("ocArray==\(ocArray)")


/**

ocArray1==(

1,

2,0)"> 3,0)"> 7

)

ocArray==(

改变ocArray1后,ocArray也改变了,是浅拷贝。

*/

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...