Emacs Lisp'de geçici bir değişken olmadan doğrudan değişkenlere birden fazla dönüş değeri atamak mümkün müdür?
Örneğin, iki listenin listesini döndüren bir işlevim olduğunu varsayalım:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
İlk dönüş değerini list-a
ve ikinci dönüş değerini atamak istersem , örneğin list-b
geçici bir değişken kullanarak bunu yapabilirim temp
:
(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)))
Bunu daha basit yapmak mümkün mü? (Geçici bir değişken belirtmeniz gerekmeyen Perl ve Python'a alışkınım)
let
fonksiyonun içinde kullanmayı unuttum .. Global bir değişken belirlemeyi
cl-destructuring-bind
Makroyu deneyebilirsiniz . Ayrıca, gerçektensetq
bir içinde kullanmak istedinizdefun
mi?setq
"özel" (küresel olarak erişilebilir) bir değişken oluşturur, genellikle bir işlevin dışına koyacağınız bir şeydir (çünkü aynı değişkeni bir kereden fazla bildirmenin anlamı yoktur, ancak işlevler birden çok kez çalıştırılmak üzere tasarlanmıştır).