首页 > 解决方案 > 访问数组 Clisp 中结构的成员

问题描述

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

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

stuct这样的

(defstruct sTSP 
  cidade 
  x 
  y)

如何访问数组位置上x的字段?i

标签: structlispcommon-lisp

解决方案


请看一下 的定义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. 不同之处在于在底层实现为s的多维数组。vector例如,您的功能将在(make-array '(2 2) :initial-element (make-sTSP)).

PS2。我重新使用foo类型名称和变量名称说明它们驻留在不同的名称空间。


推荐阅读