2
如何在Common Lisp中複製結構?我創建瞭如下結構:如何創建結構的深層副本
(defstruct state board player previous-move depth)
板是2維數組。我試着這樣做:
(setf new-state state)
當我改變東西時,2維數組中的變化也發生在state
。 如何創建一個像state
這樣的結構的副本並單獨更改它?
如何在Common Lisp中複製結構?我創建瞭如下結構:如何創建結構的深層副本
(defstruct state board player previous-move depth)
板是2維數組。我試着這樣做:
(setf new-state state)
當我改變東西時,2維數組中的變化也發生在state
。 如何創建一個像state
這樣的結構的副本並單獨更改它?
Common Lisp的爲您提供了兩種方式:
與DEFSTRUCT
state
有定義的函數copy-state
。
功能COPY-STRUCTURE
副本的結構
注意,這些都是淺拷貝。只有槽參考被複制。將不會有引用數據的副本。
要複製數組,您需要編寫一個例程(可能有庫例程)。
我在做一個hawaian跳棋遊戲,使用minimax。我需要建立一個國家並在不改變國家的情況下創建它的繼任者。不是嗎? – FPTLS
@FredPT:?我只給了你兩種複製結構的方法。 –
使用'alexandria:copy-array'來複制數組。 – Svante