【发布时间】:2014-10-06 02:16:30
【问题描述】:
我一直在尝试使用以下代码修改哈希表
(let ((alist '(gethash key *hash-table*)))
(setf alist (cons 'key 'weight)))
但问题是它实际上并没有修改哈希表(另请注意
(let ((alist (gethash key *hash-table*)))
(setf alist (cons 'key 'weight)))
也不起作用,而下面的代码确实起作用。
(setf (gethash key *hash-table*) (cons 'key 'weight)))
我不明白为什么这个有效而另一个无效。这很有用(在这段代码 sn-p 之外),因为(我假设)这就是为什么我不能运行像
这样的函数(alist-initialize (gethash key *hash-table*))
定义为:
(defun alist-initialize (alist)
(setf alist (cons 'a 'b))
【问题讨论】:
标签: lisp hashtable common-lisp evaluation