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-ave ikinci dönüş değerini atamak istersem , örneğin list-bgeç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)
letfonksiyonun içinde kullanmayı unuttum .. Global bir değişken belirlemeyi
cl-destructuring-bindMakroyu deneyebilirsiniz . Ayrıca, gerçektensetqbir içinde kullanmak istedinizdefunmi?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).