修改关联列表的条目时遇到问题。当运行此代码newLISP:修改关联列表
实施例A
(set 'Dict '(("foo" "bar")))
(letn (key "foo"
entry (assoc key Dict))
(setf (assoc key Dict) (list key "new value")))
(println Dict)
结果是:
(("foo" "new value")) ; OK
预计。与此代码
实施例B
(set 'Dict '(("foo" "bar")))
(letn (key "foo"
entry (assoc key Dict))
(setf entry (list key "new value"))) ; the only change is here
(println Dict)
结果是:
(("foo" "bar")) ; huh?
为什么Dict
没有被在第二种情况下更新?
编辑
我想是检查条目是否是在Dict
,如果它是 - 更新,否则不要管它。随着letn
我想避免重复码
(letn (key "foo"
entry (assoc key Dict))
(if entry ; update only if the entry is there
(setf entry (list key "new value")))
这就是我在例A中所做的......我想要做的就是检查一个条目是否在'Dict'中,如果是 - 修改它。用'letn'我想避免重复的代码 –