代码之家  ›  专栏  ›  技术社区  ›  Johan Kotlinski

LISP变量交换

  •  7
  • Johan Kotlinski  · 技术社区  · 17 年前

    如何在LISP中交换两个变量而不使用第三个变量?

    5 回复  |  直到 10 年前
        1
  •  25
  •   ayrnieu    17 年前
    (rotatef a b)
    
        2
  •  1
  •   Michael H.    16 年前

    也:

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

        3
  •  1
  •   user1220978 user1220978    13 年前

    另一种选择是“并行setf”:

    (psetf a b b a)

        4
  •  0
  •   coredump    9 年前

    还有一种方法:

    (setf (values a b) (values b a))
    
        5
  •  -3
  •   Community Mohan Dere    6 年前

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

    a=a^b

    b=a^b

    a=a^b

    假设a和b之前已被赋值,则^表示逻辑互斥替代。