Supongamos que tengo
(setq a 1 b 2)
¿Cómo puedo intercambiar elegantemente los valores de a
y b
sin usar una variable temporal?
Si bien recuerdo la operación de intercambio de ejemplos de programación hace muchos años, no creo que alguna vez haya necesitado una operación de "intercambio". Entonces, ¿dónde encuentras que necesitas tal cosa?
—
Stefan
@Stefan esta vez, estoy escribiendo una función que toma dos argumentos, y me gustaría asegurarme de que el primer argumento sea el más pequeño de los dos.
—
PythonNut
@PythonNut, bueno, puedes vincular el primer argumento
—
Mark Karpov
(min a b)
y el segundo (max a b)
. Esta es una solución. Algunos argumentarán que esto requiere dos comparaciones cuando una es suficiente, eso es correcto. Puede manejarlo con una comparación de manera aún más funcional, por ejemplo, utilizando el enlace de desestructuración (cl-destructuring-bind (a . b) (if (< a b) (cons a b) (cons b a)) ...)
. Esta es otra forma.
@ Mark es cierto, pero, al menos para mí, eso se siente como aplastar moscas con granadas de mano.
—
PythonNut
cl-destructuring-bind
es una herramienta ridículamente poderosa para este trabajo.