我正在查看Swift语言参考中赋值运算符的描述。是否保证销毁赋值是并行进行的?与串行分配相反。我认为在赋值运算符的描述中没有提到这一点。
需要明确的是,是否保证(a, b) = (b, a)
(其中a
和b
是var
(等价于foo = a
、a = b
、b = foo
,其中foo
是保证还不存在的变量,而不是a = b
、b = a
(这将产生具有相同值的a
和b
(。我尝试了(a, b) = (b, a)
,它似乎是并行工作的,但这与行为的文档描述不同。
元组是值类型,一旦构建,它们就独立于其中的值。
var a = 2
var b = 3
var t1 = (a, b)
print(t1) // (2, 3)
a = 4
print(t1) // (2, 3)
因此,元组(a, b)
携带两个变量的实际值,这就是为什么(b, a) = (a, b)
赋值工作没有问题。在幕后,实际的赋值是(b, a) = (2, 3)
(假设a
和b
具有上述代码片段中的值(。