Trong lisp chung tôi đã nhận thấy rằng tôi có thể viết này:Tôi có thể tham khảo các vị trí khác trong hư hỏng không?
(defun foo (&key (a 1) (b 2) (c (+ a b))) (print (+ a b c)))
Và khi tôi gọi (foo)
, 6
được in ra. Vì vậy, đối số c
có thể tham chiếu đến các giá trị được đặt cho a
và b
. Nhưng tôi không thể tìm cách để làm một cái gì đó tương tự với defstruct
. Một cái gì đó như:
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
Có cách nào để làm điều này không?
Ah, điều này có vẻ như những gì tôi đã hy vọng ... cảm ơn! – casper