- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
能否解释一下proclaim
、declaim
和declare
这三个符号的区别?
最佳答案
proclaim
命名为function使全局化 declarations .你应该使用 declaim
而是尽可能。
declaim
命名为macro使全局化 declarations (如 proclaim
)在编译时也有效。
declare
只是一个symbol (即,它没有命名 function 、 macro 或 special operator )用于制作 local declarations在一些形式的开头(您可以将其视为这些形式的语法的一个元素)。
因此,前两个影响 global environment最后一个是local .
declaim
优于 proclaim
因为它在 compilation environment 中立即生效:
Although the execution of a
proclaim
form has effects that might affect compilation, the compiler does not make any attempt to recognize and specially process proclaim forms. A proclamation such as the following, even if a top level form, does not have any effect until it is executed:
(proclaim '(special *x*))
If compile time side effects are desired,
eval-when
may be useful. For example:
(eval-when (:execute :compile-toplevel :load-toplevel)
(proclaim '(special *x*)))In most such cases, however, it is preferrable to use
declaim
for this purpose.
即,如果您的代码是
(proclaim '(special *x*))
(defun foo () (print *x*))
编译器会提示foo
读取了一个未知的特殊变量*x*
,而
(declaim (special *x*))
(defun foo () (print *x*))
不会引起警告。
附言。如果你想知道为什么 CL 甚至有 proclaim
: 首先,历史上它在那之前 declaim
,和,第二,proclaim
在宏中更简单、更有用。
关于lisp - 宣布,宣布,宣布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14813801/
能否解释一下proclaim、declaim和declare这三个符号的区别? 最佳答案 它们是 symbols , 不是 keywords . proclaim命名为function使全局化 dec
我正在尝试使现有应用程序尽可能易于访问以进行语音传输。 目前,我有一个 uiviewcontroller,它基本上是一个分页照片 View ,在 uiscrollView (tourScrollVie
选择 UITableViewCell 时,画外音会宣布“已选择”,我不希望画外音说“已选择”。我怎样才能做到这一点? 我尝试过但没有成功的事情: 更改了单元格 accessibilityHint 和
我正在测试一个带有 TalkBack 的 Android 应用程序,“LIST”这个词被宣布为“Fifty first”。显然,TalkBack 假设大写字母“LI”是罗马数字 51。 我无法访问源代
假设 你在 github 上 fork 了一个项目 多人(少于 5 人)正在使用这个 fork 目标是对我们的更改提出 pull 请求 在对我们的分支进行几次提交之后,我们现在想要将我们的分支更新为源
我是一名优秀的程序员,十分优秀!