想象一下,我有一个函数,可以接收这样的结构数组。
(defun name-of-func (array)
(dotimes (i (array-total-size array))
(print (aref array i))))
然后 stuct
是这样的
(defstruct sTSP
cidade
x
y)
如何进入该领域 x
关于 i
数组的位置?
请看一下以下定义 defstruct
. 这是漫长的,但很值得一读.如果你是懒惰的,像我们所有的人,搜索。reader
:
(defstruct foo x y z)
(defparameter foo (make-foo :x 2 :y 4))
(foo-x foo)
==> 2
(foo-y foo)
==> 4
(foo-z foo)
==> NIL
PS1. 请注意: array-total-size
应不 搭配 aref
而不是 row-major-aref
.区别在于 多维数组 落实为 vector
例如,你的功能将在以下情况下失效 (make-array '(2 2) :initial-element (make-sTSP))
.
PS2. 我重用 foo
对于 两者 类型名称 和 变量名称来说明它们的存在是 不同 名称空间。