3

Common Lisp で構造体をコピーするにはどうすればよいですか? 次のような構造を作成しました。

(defstruct state board player previous-move depth)

ボードは 2 次元配列です。私はやってみました:

(setf new-state state)

で何かを変更new-stateすると、2 次元配列の変更も で発生しstateます。stateのような構造のコピーを作成し、それを個別に変更するにはどうすればよいですか?

4

3 に答える 3

4

Common Lisp には次の 2 つの方法があります。

  • DEFSTRUCT state関数が定義されていますcopy-state

  • 関数COPY-STRUCTUREは構造をコピーします

これらは浅いコピーであることに注意してください。スロット参照のみがコピーされます。参照データのコピーはありません。

配列をコピーするには、ルーチンを作成する必要があります (ライブラリ ルーチンが存在する可能性があります)。

于 2013-07-03T18:32:29.063 に答える