问题描述
我想为huffnode结构创建新节点,
(defstruct huffnode
item
left
right
)
(setq huffroot (make-huffnode :item huffnode-item (aref arr3 (- (length arr3) 1))
:left (aref arr3 (- (length arr3) 1))
:right (aref arr3 (- (length arr3) 1))))
我需要从arr3中获取存储huffnode节点的元素,如何访问它们的数据,并将其复制到huffroot数据中
解决方法
您的问题在语法上很混乱,因此不清楚您要问什么。
您使用aref
访问数组的元素,并使用accessors
访问结构的插槽(默认情况下)是根据结构名称和插槽名称自动生成的,例如(huffnode-item x)
获取(或用作setf
集的目标时)存储在x
; SLIME 2.26
CL-USER> (defstruct huffnode item left right)
HUFFNODE
CL-USER> (defvar *huffroot* (make-huffnode :item "foo" :left nil :right nil))
*HUFFROOT*
CL-USER> (setf (huffnode-item *huffroot*)
(aref arr3 0)
(huffnode-left *huffroot*)
(aref arr3 1)
(huffnode-right *huffroot*)
(aref arr3 2)