我一直试图在不使用临时值的情况下交换2个对象,这样做是这样的:
var a = "Hello, "
var b = "world!"
(a,b) = (b,a)
a // "world!"
b // "Hello, "
有没有人知道这种语言是如何做的,是第二个元组(b,a)存储在内存中以允许第一个重新分配自身,还是通过切换引用来完成所有操作?
提前致谢
答案 0 :(得分:0)
这种“转换”执行以下操作:
替换类型
的指针var classA = NSString(string: "foo")
var classB = NSString(string: "bar")
NSLog("%p %p", classA, classB) // 0x7fecd351def0 0x7fecd341cc30
(classA, classB) = (classB, classA)
NSLog("%p %p", classA, classB) // 0x7fecd341cc30 0x7fecd351def0
为值类型
创建新的值(副本)var valueA = "baz"
var valueB = "qux"
NSLog("%p %p", valueA, valueB) // 0x7fecd34201b0 0x7fecd34211e0
(valueA, valueB) = (valueB, valueA)
NSLog("%p %p", valueA, valueB) // 0x7fecd351c880 0x7fecd351de90