返回

QuickLoad 错误修复:轻松解决“尝试对非数组执行数组操作”问题

windows

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 文件:

  1. 找到 cdb.lisp 文件(通常位于 QuickLisp 的安装目录中)。
  2. 在 cdb-writer 类中,找到以下代码段:
:buckets (let ((a (make-array 256)))
              (map-into a
                (lambda () (make-instance 'hash-table-bucket)))
            a)
  1. 将其替换为:
:buckets (make-array 256
                    :element-type 'hash-table-bucket
                    :initial-element make-instance)
  1. 保存更改并重新启动 QuickLisp。

其他提示

  • 确保你使用的是最新版本的 QuickLoad。
  • 如果你在应用上述解决方案后仍然遇到错误,请尝试重新安装 QuickLisp。
  • 你可以在 QuickLisp 文档 中找到有关 QuickLoad 和 cdb.lisp 的更多信息。

常见问题解答

  1. 为什么会出现“尝试对非数组执行数组操作”错误?

此错误是由 cdb.lisp 中 map-into 函数错误地提供了 "nil" 而不是所需的数组引起的。

  1. 如何使用最新 QuickLisp 版本?

QuickLisp 下载页面 下载并安装最新版本的 QuickLisp。

  1. 如何手动修改 cdb.lisp 文件?

在 cdb.lisp 文件中找到并替换上面提到的代码段。

  1. 解决此错误还有其他方法吗?

没有其他已知的方法来解决此错误。

  1. 如果不解决此错误,会发生什么?

如果你不解决此错误,你将无法使用 QuickLoad 加载 vecto 等依赖于 cdb.lisp 的库。