gpt4 book ai didi

copy - 在Lisp中复制哈希表

转载 作者:行者123 更新时间:2023-12-04 17:00:06 24 4
gpt4 key购买 nike

我最近一直在使用Common Lisp中的哈希表。我一直在想如何制作包含与第一个相同的所有值的哈希表的单独副本。有官方的方法吗?如果没有,您可以举一个使用maphash的例子吗?

最佳答案

由于clhs没有列出复制表函数,因此我认为maphash是可行的方法。

(defun copy-table (table)
(let ((new-table (make-hash-table
:test (hash-table-test table)
:size (hash-table-size table))))
(maphash #'(lambda(key value)
(setf (gethash key new-table) value))
table)
new-table))

(let ((table (make-hash-table)))
(mapcar #'(lambda(arg argg)
(setf (gethash arg table) argg))
'(1 2 3 4) '(a b c d))
(format t "~a~%" table)
(format t "~a~%" (copy-table table)))

#<HASH-TABLE :TEST EQL :COUNT 4 {10063C7F13}>
#<HASH-TABLE :TEST EQL :COUNT 4 {10063C86D3}>

但是,此函数未考虑哈希表的特殊配置,但作为示例就足够了。

关于copy - 在Lisp中复制哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com