【发布时间】:2013-08-24 04:24:18
【问题描述】:
我(至少)有一个包存放在我的主程序中。我有另一个用于运行测试的包。我:使用测试包的defpackage形式的主程序包,但只导入导出的符号。所以我不能测试所有的函数,只能测试我明确导出的那些(公共 API)。我该如何解决这个问题?
【问题讨论】:
标签: package common-lisp symbols
我(至少)有一个包存放在我的主程序中。我有另一个用于运行测试的包。我:使用测试包的defpackage形式的主程序包,但只导入导出的符号。所以我不能测试所有的函数,只能测试我明确导出的那些(公共 API)。我该如何解决这个问题?
【问题讨论】:
标签: package common-lisp symbols
您始终可以使用双冒号限定符引用内部(未导出)符号:
(package-name::function-name)
您还可以使用import 将符号导入您的测试包(无论它是否从主包中导出)。例如:
(import 'package-name::function-name)
(fboundp 'function-name) ;; => t
Here'simport 上的 CLHS 条目。
另外,如果你还没有读过,我推荐 Practical Common Lisp 中的Programming in the Large: Packages and Symbols 章节。它没有直接解决您的问题,但我提到它是因为我发现它对重新分级包和符号很有帮助。
【讨论】: