Предположим, у меня есть
(setq a 1 b 2)
Как я могу элегантно поменять значения a
и b
без использования временной переменной?
Хотя я помню операцию подкачки из примеров программирования много-много лет назад, я не думаю, что мне когда-либо была нужна такая операция подкачки. Так где вы находите, что вам нужна такая вещь?
—
Стефан
@ Стефан на этот раз я пишу функцию, которая принимает два аргумента, и я хотел бы убедиться, что первый аргумент является меньшим из двух.
—
PythonNut
@PythonNut, вы можете привязать первый аргумент к,
—
Марк Карпов
(min a b)
а второй к (max a b)
. Это одно из решений. Некоторые утверждают, что для этого требуется два сравнения, когда одного достаточно, это правильно. Вы можете справиться с одним сравнением еще более функционально, например, используя деструктурирующее связывание (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)
. Это другой способ.
@ Правда, но, по крайней мере для меня, это похоже на мух с ручными гранатами.
—
PythonNut
cl-destructuring-bind
это невероятно мощный инструмент для этой работы.