15.3 Swift集合类的拷贝

来源:互联网 发布:深入浅出rails 知乎 编辑:程序博客网 时间:2024/04/28 23:44

        /**

         集合类的拷贝操作

         */

        

        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, 2, 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", 1: "a"]

         

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

         所以上面是深拷贝。

         */

        

        

        

        

        

        

        

        

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


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

        

        /**

         open class NSMutableArray : NSArray

         

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

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

         */


        

        var ocArray1 = ocArray

        

        ocArray1.add(7)

        

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

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


        /**

         ocArray1==(

         1,

         2,

         3,

         7

         )

         ocArray==(

         1,

         2,

         3,

         7

         )

         

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

         */


0 0
原创粉丝点击