(let ((x 21) (y 7))
(princ (/ x y))
(let z
(/ x y)
(if (eq z 3)(princ "Working"))))
Run Code Online (Sandbox Code Playgroud)
我对这个程序的意图是当z等于3时打印出"Working",我假设z在if块中可见(来自let z); 但是,情况并非如此,错误读作:
-IF:变量Z没有值.
有没有办法让我在if块中看到变量z?
谢谢.
你的LET语法不正确.第一个参数LET应该是变量绑定列表:
(let ((var1 val1)
(var2 val2)
...)
body)
Run Code Online (Sandbox Code Playgroud)
在绑定列表中,您可以只使用varN而不是(varN valN)缩写(varN nil).
但是你根本没有列表,你只需要符号Z列表所在的符号.那是无效的(我很惊讶你没有因为它而得到语法错误).我怀疑你的意思是:
(let ((z (/ x y)))
(if (eq z 3) (princ "Working")))
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你不应该eq用来比较数字 - 使用=.