2013-07-03 39 views
2

如何在Common Lisp中複製結構?我創建瞭如下結構:如何創建結構的深層副本

(defstruct state board player previous-move depth) 

板是2維數組。我試着這樣做:

(setf new-state state) 

當我改變東西時,2維數組中的變化也發生在state。 如何創建一個像state這樣的結構的副本並單獨更改它?

回答

4

Common Lisp的爲您提供了兩種方式:

  • DEFSTRUCTstate有定義的函數copy-state

  • 功能COPY-STRUCTURE副本的結構

注意,這些都是淺拷貝。只有槽參考被複制。將不會有引用數據的副本。

要複製數組,您需要編寫一個例程(可能有庫例程)。

+0

我在做一個hawaian跳棋遊戲,使用minimax。我需要建立一個國家並在不改變國家的情況下創建它的繼任者。不是嗎? – FPTLS

+0

@FredPT:?我只給了你兩種複製結構的方法。 –

+4

使用'alexandria:copy-array'來複制數組。 – Svante

相關問題