É possível atribuir vários valores de retorno diretamente às variáveis sem passar por uma variável temporária no Emacs Lisp?
Por exemplo, digamos que eu tenho uma função que retorna uma lista de duas listas:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
Se eu quiser atribuir o primeiro valor de retorno list-a
e o segundo valor de retorno list-b
, posso fazer isso usando uma variável temporária temp
, por exemplo:
(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)))
É possível fazer isso de maneira mais simples? (Estou acostumado a Perl e Python, onde você não precisa especificar uma variável temporária)
let
dentro da função .. Eu não planejei para definir quaisquer variáveis globais :)
cl-destructuring-bind
macro. Além disso, você realmente pretendia usarsetq
dentro de umdefun
?setq
cria uma variável "especial" (acessível globalmente), algo que você normalmente colocaria fora de uma função (porque há pouco significado em declarar a mesma variável mais de uma vez, enquanto as funções devem ser executadas mais de uma vez).