你无法创建方法交换,因此在调用swap(x,y)x和y之后将被交换。你可以通过交换可变内容的内容¹来创建此类方法,但这不会更改其对象标识,因此你无法为此定义通用方法。
但是,你可以编写一种方法来交换数组或列表中的两个项目(如果需要的话)。
¹例如,你可以创建一个包含两个列表的交换方法,执行该方法后,列表x将具有列表y的先前内容,列表y将具有列表x的先前内容。
int swap(int a, int b) { // usage: y = swap(x, x=y);
return a;
}
y = swap(x, x=y);
它依赖于以下事实:x
将传递到swap
之前y
被分配给x
,然后x
返回并分配给y
。
你可以使其通用并交换任意数量的相同类型的对象:
<T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z);
return args[0];
}
c = swap(a, a=b, b=c)