Предположим, у меня есть
(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это невероятно мощный инструмент для этой работы.