在普通的 lisp 中,我注意到我可以这样写:
(defun foo (&key (a 1) (b 2) (c (+ a b))) (print (+ a b c)))
当我打电话时(foo)
,6
会打印出来。所以参数c
可以引用为a
和设置的值b
。但我似乎无法找到一种方法来做类似的事情defstruct
。就像是:
CL-USER> (defstruct thing a b c)
THING
CL-USER> (setq q (make-thing :a 1 :b 2 :c (+ a b)))
; Evaluation aborted
CL-USER> (setq q (make-thing :a 1 :b 2 :c (+ :a :b)))
; Evaluation aborted
有没有办法做到这一点?