(defun make-it-5 (num)
(setq num 5))
(setq a 0)
(make-it-5 a)
;; now a is still 0, not 5.
上記のコードでは、(setq a 5)も(setq 0 5)も起こっていないようです。 (setq a 5)が発生した場合、aは5に変更されていますが、aはまだ0です。(setq 0 5)が発生した場合、Lispエラーが発生しています。何が起こるのですか?それが私の質問です。その名の通りメイクそれ-5作品を作る方法をグーグルと不思議でここに来た人、あなたのいくつかのためにdefqでパラメータ変数をsetqするとどうなりますか? (Emacs)
一つの方法は、
(defmacro make-it-7 (num) ; defmacro instead of defun
`(setq ,num 7))
(setq a 0)
(make-it-7 a)
;; now a is 7.
別で、お勧めです:
(defun make-it-plus (num-var)
(set num-var (+ 1 (symbol-value num-var))) ; `set' instead of `setq'
)
(setq a 0)
(make-it-plus 'a) ; 'a instead of a
;; now a is 1.
質問は少し混乱しています。両方を提供する2つの選択肢は、lisp(emacs-lisp)のより詳細な理解を必要とします。私はあなたがそれらの仕事の仕方を理解していないと推測しています... –