¿Es posible asignar múltiples valores de retorno directamente a las variables sin pasar por una variable temporal en Emacs Lisp?
Por ejemplo, supongamos que tengo una función que devuelve una lista de dos listas:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
Si quiero asignar el primer valor de retorno a list-a
y el segundo valor de retorno a list-b
, puedo hacer esto usando una variable temporal temp
, por ejemplo:
(let* ((temp (test-func)) (list-a (car temp)) (list-b (cadr temp)))
(message-box (prin1-to-string list-a))
(message-box (prin1-to-string list-b)))
¿Es posible hacer esto de manera más simple? (Estoy acostumbrado a Perl y Python donde no tienes que especificar una variable temporal)
let
dentro de la función. No tenía planeado establecer ninguna variable global :)
cl-destructuring-bind
macro. Además, ¿realmente pretendías usarsetq
dentro de adefun
?setq
crea una variable "especial" (accesible a nivel mundial), algo que normalmente pondría fuera de una función (porque tiene poco significado declarar la misma variable más de una vez, mientras que las funciones deben ejecutarse más de una vez).