我刚开始使用Lisp并需要一些帮助。这是技术上的功课,但是我试了一下,得到了我想要的东西:
(defun speed (kmp)
(cond ((> kmp 100) "Fast")
((< kmp 40) "Slow")
(t "Average")))
但是,如果我运行该程序,则会显示"Average"
而不是Average
(不带引号)。
如何让它显示没有引号的字符串?
答案 0 :(得分:3)
您可以使用符号代替字符串。但请记住,符号将转换为大写:
> 'Average
AVERAGE
如果您关心案例或想要嵌入空格,请使用format
:
> (format t "Average")
Average
答案 1 :(得分:2)
read-eval-print循环显示函数的返回值,该值是cond分支中的一个字符串。字符串通过用双引号括起来可读取。
你可以使用(写字符串(速度42))。不要担心它还会在双引号中显示字符串 - 这是在无引号输出后显示的write-string的返回值。
答案 2 :(得分:1)
您也可以使用符号代替字符串:
(defun speed (kmp)
(cond ((> kmp 100) 'fast)
((< kmp 40) 'slow)
(t 'average)))
默认情况下,符号是大写的,因此内部快速是快速的。
您可以在任何情况下使用任何字符编写任何符号,并使用垂直条转义:
|The speeed is very fast!|
上面是Common Lisp中的有效符号,并且在内部存储时就像保存大小写一样。