我使用defparameter创建了一些整数类型的全局变量。我在CASE子句中将它们用作键,以匹配在程序中的某个时刻设置为这些全局变量之一的test-key。
据我所知,CASE宏使用EQL(http://clhs.lisp.se/Body/26_glo_s.htm#same),但是我没有找到匹配项:所有内容都被转储到else子句中。下面的代码总结了令人困惑的事情。
我不明白为什么我在案例中没有得到YES。
不评估case子句,而是直接使用它们。这个:
(case x
(snafu 'yes)
(t 'no))
Run Code Online (Sandbox Code Playgroud)
等效于:
(if (eql x 'snafu) 'yes 'no)
Run Code Online (Sandbox Code Playgroud)
请注意snafu
:之前的引号x
是与符号snafu
而不是其值进行比较的。