Apakah mungkin untuk menetapkan beberapa nilai pengembalian langsung ke variabel tanpa melalui variabel sementara di Emacs Lisp?
Misalnya, katakanlah saya memiliki fungsi yang mengembalikan daftar dua daftar:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
Jika saya ingin menetapkan nilai pengembalian pertama list-adan nilai pengembalian kedua list-b, saya bisa melakukan ini dengan menggunakan variabel sementara temp, misalnya:
(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)))
Apakah mungkin melakukan ini dengan lebih sederhana? (Saya terbiasa dengan Perl dan Python di mana Anda tidak harus menentukan variabel sementara)
letdi dalam fungsi .. Saya tidak berencana untuk mengatur variabel global :)
cl-destructuring-bindmakro. Juga, apakah Anda benar-benar ingin menggunakannyasetqdi dalamdefun?setqmenciptakan variabel "khusus" (dapat diakses secara global), sesuatu yang biasanya Anda letakkan di luar fungsi (karena ada sedikit makna dalam mendeklarasikan variabel yang sama lebih dari satu kali, sementara fungsi dimaksudkan untuk dijalankan lebih dari satu kali).