在Swift中,析构函数赋值是否保证是并行赋值



我正在查看Swift语言参考中赋值运算符的描述。是否保证销毁赋值是并行进行的?与串行分配相反。我认为在赋值运算符的描述中没有提到这一点。

需要明确的是,是否保证(a, b) = (b, a)(其中abvar(等价于foo = aa = bb = foo,其中foo是保证还不存在的变量,而不是a = bb = a(这将产生具有相同值的ab(。我尝试了(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)(假设ab具有上述代码片段中的值(。

最新更新