访问数组中结构的成员 Clisp

问题描述 投票:0回答:1

想象一下,我有一个函数,可以接收这样的结构数组。

(defun name-of-func (array) 
  (dotimes (i (array-total-size array))
    (print (aref array i))))

然后 stuct 是这样的

(defstruct sTSP 
  cidade 
  x 
  y)

如何进入该领域 x 关于 i 数组的位置?

lisp common-lisp clisp
1个回答
3
投票

请看一下以下定义 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 对于 两者 类型名称 变量名称来说明它们的存在是 不同 名称空间。

© www.soinside.com 2019 - 2024. All rights reserved.