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-a
dan 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)
let
di dalam fungsi .. Saya tidak berencana untuk mengatur variabel global :)
cl-destructuring-bind
makro. Juga, apakah Anda benar-benar ingin menggunakannyasetq
di dalamdefun
?setq
menciptakan 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).