问题描述
我正在尝试修改结构字段的副本。我尝试使用 COPY-TREE
无济于事。这是我的代码:
(defstruct scenario
(board '() :type list)
(letters "" :type string)
(blank-char #\- :type character))
(defparameter *scen-1*
(make-scenario
:board (string->board "cat---|a-----|b-----" #\|)))
在SETF
之前:
(print *scen-1*)
#S(SCENARIO
:BOARD ("CAT---" "A-----" "B-----")
:LETTERS ""
:BLANK-CHAR #\-)
当我尝试使用 COPY-TREE
修改电路板的副本时,它会修改原始电路板。
(let ((board (copy-tree (scenario-board *scen-1*))))
(setf (subseq (nth 1 board) 0 2) "GG"))
(print *scen-1*)
#S(SCENARIO
:BOARD ("CAT---" "GG----" "B-----")
:LETTERS ""
:BLANK-CHAR #\-)
*scen-1*
应该保持不变。
如何修改 BOARD
字段的副本,而不是原始字段?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)