如何快速交换任何类型的两个变量而不使用第三个变量?

Ara*_*ell 1 swift

我知道如何像下面那样交换int

var x = 5
var y = 7

x = x + y
y = x - y
x = x - y

print(x)
print(y)
Run Code Online (Sandbox Code Playgroud)

但是,如何在不使用第三个变量的情况下交换任何其他类型的两个变量呢?

Swe*_*per 8

使用元组!

var a = "a"
var b = "b"
(b, a) = (a, b)
Run Code Online (Sandbox Code Playgroud)

这适用于任何类型或任何数量的变量。

另一种类似于Ints 的方法:

a += b
b = String(a.dropLast(b.count))
a = String(a.dropFirst(b.count))
Run Code Online (Sandbox Code Playgroud)

  • 或者简单地“交换(&a,&b)” (2认同)