使用參數Lisp的結構,我想,以定義表示遊戲的董事會結構來寫一些Lisp代碼這樣如何定義的定義
(defstruct board
(size 7)
(matrix (make-array (list size size))
(red-stones 0)
(black-stones 0))
。
我希望能夠創建一個帶有製作板的新電路板,該電路板將隨着給定尺寸(大小x尺寸)隨時創建矩陣,這樣我就不必從另一個調用製作板函數,使矩陣。
但是,當我將該代碼加載到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都可用,因爲這可能會導致編程錯誤。
我建議你熟悉一下** CLOS **,它本質上就是Common Lisp的對象/類系統。將_board_定義爲一個類,您可以通過`(defmethod create-board((type-of thing)))`指定_methods_。也就是說,用於使用同一個類的各種_methods_依賴於什麼類型的用戶形式提供的信息。如果你確實下了這個兔子洞,我建議[這個](http://www.aiai.ed.ac.uk/~jeff/clos-guide.html)** CLOS **介紹,以及包含:CL-MOP _Closer對於元類的MOP_系統,ql:quickload-able。 – miercoledi 2014-10-10 03:00:49