Swift中的解构赋值保证是并行赋值吗?

Is destructuring assignment guaranteed to be parallel assignment in Swift?

我正在查看 Swift 语言参考中的 the description of the assignment operator。是否保证并行进行解构赋值?与串行分配相反。我没有在赋值运算符的描述中看到这一点。

明确一下,是否保证(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 具有上述代码片段中的值)。