我正在尝试将棋子的攻击动作存储在 64 平方的位板上。基本上我使用任何哈希表数组来做到这一点:
(defvar attacks (make-array '(64) :initial-element (make-hash-table))
但是,我注意到当我填充数组中的每个哈希表(每个大约 1000 个元素)时,它与另一个哈希表相交。那是一个哈希表具有来自另一个哈希表的值,即使我没有把它放在那里。
我在想象事情吗?这是一个错误吗?
我正在尝试将棋子的攻击动作存储在 64 平方的位板上。基本上我使用任何哈希表数组来做到这一点:
(defvar attacks (make-array '(64) :initial-element (make-hash-table))
但是,我注意到当我填充数组中的每个哈希表(每个大约 1000 个元素)时,它与另一个哈希表相交。那是一个哈希表具有来自另一个哈希表的值,即使我没有把它放在那里。
我在想象事情吗?这是一个错误吗?
您创建一个哈希表(使用 make-hash-table),然后将其设置在数组的所有元素中。做你想做的事,你想做以下之一:
这样,哈希表将是分开的,而不是存储 64 次的同一个哈希表。
您应该使用 :INITFORM 而不是 :initial-element 来获取不同的哈希表
(我的答案是错误的,请参阅 Vatine 的)