我一直在尝试使用以下代码修改哈希表
(let ((alist '(gethash key *hash-table*)))
(setf alist (cons 'key 'weight)))
Run Code Online (Sandbox Code Playgroud)
但问题是它实际上并没有修改哈希表(也请注意
(let ((alist (gethash key *hash-table*)))
(setf alist (cons 'key 'weight)))
Run Code Online (Sandbox Code Playgroud)
也不起作用,而以下代码确实有效.
(setf (gethash key *hash-table*) (cons 'key 'weight)))
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这个有效而另一个无效.这很有用(在此代码片段之外)因为(我假设)这就是为什么我不能运行像这样的函数
(alist-initialize (gethash key *hash-table*))
Run Code Online (Sandbox Code Playgroud)
定义是:
(defun alist-initialize (alist)
(setf alist (cons 'a 'b))
Run Code Online (Sandbox Code Playgroud)