假设我有
(setq a 1 b 2)
我怎样才能优雅地交换的价值a
,并b
没有使用临时变量?
虽然我记得很多年前编程示例中的交换操作,但我认为我从来不需要这样的“交换”操作。那么,您在哪里发现您需要这种东西?
—
Stefan
@Stefan这次,我正在编写一个带有两个参数的函数,并且我想确保第一个参数是两个中较小的一个。
—
PythonNut
@PythonNut,那么您可以将第一个参数绑定到
—
Mark Karpov 2015年
(min a b)
第二个参数(max a b)
。这是一种解决方案。有人会认为,当一个条件满足时,就需要进行两次比较,这是正确的。您仍然可以通过一种比较比较实用的方式来处理它,例如使用destructuring bind (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)
。这是另一种方式。
@马克是真的,但至少对我而言,这就像用手榴弹扑打苍蝇。
—
PythonNut
cl-destructuring-bind
是完成这项工作的不可思议的强大工具。