我试图在64平方bitboard中存储棋子的攻击动作。基本上我使用任何哈希表数组来执行此操作:
(defvar attacks (make-array '(64) :initial-element (make-hash-table))
但是,我注意到当我填充数组中的每个哈希表(每个大约1000个元素)时,它与另一个哈希表相交。这是一个散列表具有来自另一个散列表的值,即使我没有把它放在那里。
我在想象吗?这是一个错误吗?
答案 0 :(得分:4)
您可以创建一个哈希表(使用make-hash-table),然后在数组的所有元素中设置该哈希表。要做你想做的事,你想要做一个:
这样,哈希表将是独立的,而不是存储64次的相同哈希表。
答案 1 :(得分:1)
您应该使用:INITFORM而不是:initial-element来获取不同的哈希表
(我的回答是错误的,见Vatine的)