gpt4 book ai didi

arrays - 如何访问存储在数组中的类对象?

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:52 28 4
gpt4 key购买 nike

所以如果我有一个 defclass 对象,我创建了它的一个实例并将它放在一个数组中。如何获取其在数组中的槽的值?

我试过:

(slot-value (aref *array* 0) :name)

我想我只是不明白如何访问数组中的对象。

我可以使用 (format t) 以不可读的形式打印对象,但是有没有办法以我真正可以理解的形式打印对象和所有插槽?

(defun generate-object (name)
(let ((a (make-instance 'person
:name name)))
(setf (aref *array* 0) a)))

它将对象放在数组中,但似乎没有创建插槽?

这导致了问题:

(defclass person ()
((name :accessor name
:reader read-name
:initarg :name)))

(defvar *array* 0)
(setf *array* (make-array 20))

(defun generate-object (name)
(let ((a (make-instance 'person
:name name)))
(setf (aref *array* 0) a)))

最佳答案

插槽名称需要是一个符号,即syntactically valid as a variable name .尝试 'name 而不是 :name

(slot-value (aref *array* 0) 'name)

看例子here .

关于arrays - 如何访问存储在数组中的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com