LISP变量交换

时间:2009-02-09 22:10:39

标签: lisp common-lisp

如何在不使用第三个变量的情况下在LISP中交换两个变量?

5 个答案:

答案 0 :(得分:25)

(rotatef a b)

答案 1 :(得分:1)

此外:

(让((a b)       (b a))    ...)

答案 2 :(得分:1)

另一种选择,“并行设置”:

(psetf a b b a)

答案 3 :(得分:0)

又一种方法:

(setf (values a b) (values b a))

答案 4 :(得分:-3)

相当可怕的方法,它只适用于数值,但它更通用,而不依赖于语法:

  

a = a ^ b

     

b = a ^ b

     

a = a ^ b

假设之前分配了a和b,则^表示逻辑独占替代。