不一样的Value Type行为

71 阅读1分钟

Copy-on- write

Value Type在传递时时用复制的。

当复制一份的成本太高的时候,采用Copy-on- write。

Array,Dictionary,Set,String会采用这种行为。

把一个Value Type当作Reference Type来对待,直到你对他做改动为止。

关键字:inout

Copy-in Copy-out。复制进来,复制出去。

func add(_ a: Int, _ b: Int) -> Int {
    a + b
}

var number = 1
number = add(number, 2)
print(number)

func add2(_ a: inout Int, _ b: Int) {
    a += b
}
var number2 = 1
add2(&number2, 2)
print(number2)