Припустимо, я маю
(setq a 1 b 2)
Як я можу елегантно поміняти місцями значення a
та b
без використання тимчасової змінної?
Хоча я багато років тому пам’ятаю операцію свопу з прикладів програмування, я не думаю, що мені ніколи не потрібна була така операція "підміна". То де ви знайдете, що вам потрібна така річ?
—
Стефан
@Stefan цього разу я пишу функцію, яка бере два аргументи, і я хотів би переконатися, що перший аргумент є меншим із двох.
—
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
є смішно потужним інструментом для цієї роботи.