我想写一些这样的 Lisp 代码
(defstruct board
(size 7)
(matrix (make-array (list size size))
(red-stones 0)
(black-stones 0))
为了定义一个代表游戏棋盘的结构。
我希望能够创建一个带有 make-board 的新板,它将使用给定的尺寸(大小 x 大小)动态创建矩阵,这样我就不必从另一个函数调用 make-board矩阵。
但是,当我将该代码加载到 clisp 解释器并尝试制作一个新板(使用 make-board)时,我收到一条错误消息,告诉我“大小”没有价值。
有没有办法在结构的定义中使用结构的字段?
或者我应该这样做吗?
(defstruct board
size
matrix
(red-stones 0)
(black-stones 0))
(defun create-board (size)
(make-board :size size :matrix (make-array (list size size))) )
真的,我不喜欢同时使用 make-board 和 create-board,因为这可能会导致编程错误。