Emacs Lispの一時変数を経由せずに、変数に複数の戻り値を直接割り当てることは可能ですか?
たとえば、2つのリストのリストを返す関数があるとします。
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
最初の戻り値をlist-a
に、2番目の戻り値をに割り当てたい場合list-b
、一時変数を使用してこれを行うことができます。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)))
これをもっと簡単に行うことは可能ですか?(私はあなたが一時変数を指定する必要がないPerlとPythonに慣れています)
@wvxvwありがとう!はい
—
HåkonHægland15年
let
、関数内で使用するのを忘れました。グローバル変数を設定する予定はありませんでした:)
cl-destructuring-bind
マクロを試すことができます。また、あなたは本当にsetq
内部で使用するつもりでしたdefun
か?setq
「特別な」(グローバルにアクセス可能な)変数を作成します。これは通常、関数の外側に置くものです(同じ変数を複数回宣言する意味はほとんどありませんが、関数は複数回実行することを意図しています)。