返回
QuickLoad 错误修复:轻松解决“尝试对非数组执行数组操作”问题
windows
2024-03-28 18:47:54
QuickLoad 错误修复:解决“尝试对非数组执行数组操作”问题
在使用 QuickLoad 时,你可能会遇到以下错误:
(ql:quickload "vecto") evaluates to: "Error: Attempt to do an array operation on nil which is not an array."
问题原因
此错误是由 QuickLoad 中 cdb.lisp 中的 map-into 函数错误地提供了 "nil" 而不是所需的数组引起的。
解决方案方法
有两种方法可以解决此错误:
使用最新 QuickLisp 版本
QuickLisp 的最新版本已经修复了此错误。你可以下载并安装最新版本的 QuickLisp。
手动修改 cdb.lisp
如果你不想升级到 QuickLisp 的最新版本,也可以手动修改 cdb.lisp 文件:
- 找到 cdb.lisp 文件(通常位于 QuickLisp 的安装目录中)。
- 在 cdb-writer 类中,找到以下代码段:
:buckets (let ((a (make-array 256)))
(map-into a
(lambda () (make-instance 'hash-table-bucket)))
a)
- 将其替换为:
:buckets (make-array 256
:element-type 'hash-table-bucket
:initial-element make-instance)
- 保存更改并重新启动 QuickLisp。
其他提示
- 确保你使用的是最新版本的 QuickLoad。
- 如果你在应用上述解决方案后仍然遇到错误,请尝试重新安装 QuickLisp。
- 你可以在 QuickLisp 文档 中找到有关 QuickLoad 和 cdb.lisp 的更多信息。
常见问题解答
- 为什么会出现“尝试对非数组执行数组操作”错误?
此错误是由 cdb.lisp 中 map-into 函数错误地提供了 "nil" 而不是所需的数组引起的。
- 如何使用最新 QuickLisp 版本?
从 QuickLisp 下载页面 下载并安装最新版本的 QuickLisp。
- 如何手动修改 cdb.lisp 文件?
在 cdb.lisp 文件中找到并替换上面提到的代码段。
- 解决此错误还有其他方法吗?
没有其他已知的方法来解决此错误。
- 如果不解决此错误,会发生什么?
如果你不解决此错误,你将无法使用 QuickLoad 加载 vecto 等依赖于 cdb.lisp 的库。