这是我从包:bar
导出符号:baz
和foo
的方式:
(in-package :cl-user)
(defpackage foo
(:use :cl)
(:export :bar :baz))
(in-package :foo)
当我从导出符号列表中删除:baz
时,SBCL会抱怨并且编译失败。
warning:
FOO also exports the following symbols:
(FOO:BAZ)
如何在不重新加载SLIME的情况下让SBCL忘记:baz
?
答案 0 :(得分:10)
<强> SBCL 强>:
* (apropos "unexport")
UNEXPORT (fbound)
* (documentation 'unexport 'function)
"Makes SYMBOLS no longer exported from PACKAGE."
* (apropos "unintern")
UNINTERN (fbound)
* (documentation 'unintern 'function)
"Makes SYMBOL no longer present in PACKAGE. If SYMBOL was present then T is
returned, otherwise NIL. If PACKAGE is SYMBOL's home package, then it is made
uninterned."
答案 1 :(得分:2)
有很多关于这些问题的文档,您应该阅读或重读这些文档。这个包/符号的东西乍一看听起来微不足道,但它与其他语言值得一些阅读的不同(即尝试重用其他语言的知识在包和符号方面特别危险)。
如果在阅读完文档后仍然遇到问题,请尝试重新阅读(通过遇到麻烦获得的经验将有助于您专注于相关部分;重读不会在阅读之间遇到麻烦不是很有效率恕我直言)。
我认为有用的一些链接:
答案 2 :(得分:1)
搜索将我引到了这里,但是我遇到了稍微不同的问题。
package br.dev.authentication.view;
import java.io.IOException;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.inject.Inject;
import javax.inject.Named;
@RequestScoped
@Named
public class RedirectorToStart
{
@Inject
private ExternalContext _externalContext;
public void goToStart() throws IOException
{
_externalContext.redirect(_externalContext.getRequestContextPath() + "/app/start.xhtml");
}
}
在这种情况下,一个需要
; caught WARNING:
; MY-PACKAGE also uses the following packages:
; (DEPENDENCY)