我希望有人能帮我解决这个问题,因为我找不到任何有用的答案,而且我是 Lisp 的新手。
我想要做的是测试一个元素的值,如果它是 1 就打印一些东西,否则打印空白字符。
当所有列表参数的值都为 1 时,这会起作用:
(defun print-lst (list)
(format t "~%~a ~a ~a~%"
(if (= (nth 0 list) '1)
'¦)
(if (= (nth 1 list) '1)
'P)
(if (= (nth 2 list) '1)
'¦)))
所以输出是
¦ P ¦
。但是,如果列表中的第二个元素是 0,它会在那个地方打印 NIL ¦ NIL ¦
并且我希望它打印一个空格而不是 ¦ ¦
(不仅仅是跳过那个字符 ¦¦
,重要的是在那个位置有一个空白字符如果测试值不是 1),则输出行。如果条件
(if (= (nth 1 list) '1) 'P)
不满足,有没有办法返回一个空白字符,或者有没有其他方法可以执行此操作?我希望我解释得很好。谢谢你。
最佳答案
If
接受三个参数:condition、then-form、else-form; else 形式是可选的。此外,我会对文字字符使用文字字符语法。
(if (= (nth 0 list) 1)
#\P
#\Space)
文档:
if
关于lisp - 如何在 Lisp 格式函数中打印空白字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10351055/