Swift中的解构赋值保证是并行赋值吗?
Is destructuring assignment guaranteed to be parallel assignment in Swift?
我正在查看 Swift 语言参考中的 the description of the assignment operator。是否保证并行进行解构赋值?与串行分配相反。我没有在赋值运算符的描述中看到这一点。
明确一下,是否保证(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
具有上述代码片段中的值)。
我正在查看 Swift 语言参考中的 the description of the assignment operator。是否保证并行进行解构赋值?与串行分配相反。我没有在赋值运算符的描述中看到这一点。
明确一下,是否保证(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
具有上述代码片段中的值)。