在LispWorks中进行编程10:打印
Category:UI界面编写打印
在Listener中评估Lisp过程时,它返回一个值。但是当你运行一个程序时,你可能希望它在程序返回最终结果之前打印出几个值。Lisp提供了几种专门用于打印输出值的替代功能。
打印结果:打印
其中最简单的是print – 它只是打印出其参数的打印表示,然后返回参数。因此,如果您评估,例如:
CL-USER 1 > (print 123)123123
第一个“123”是打印程序的效果。第二个“123”是过程返回的值,也是123.这个例子使它更清晰:
(defun print-and-double (n) (print n) (* n 2))
如果我们评估它,我们得到:
CL-USER 3 > (print-and-double 12)1224
打印格式化值:格式
瑞士军刀印刷的格式。它包括以各种可能的方式打印每种类型的值的选项,我猜大多数Lisp程序员只使用其一小部分功能。我将在这里介绍其最有用的功能:
的格式 的过程采用两个或更多个参数。
第一个参数是t,告诉格式化过程打印结果,或者是nil,以将结果作为字符串返回。
第二个参数是格式字符串,它告诉格式化 过程如何打印结果。这是一个文本字符串,可以包含特殊格式序列,前缀为“〜”字符(称为“波浪号”或“旋转”),以在此字符串中插入值。
评估其余参数以提供要插入格式字符串的值。最通用的格式序列是“~a”,它插入将通过print打印的值。所以,例如:
(format t “The answer is ~a.” (* 2 3))
将(* 2 3)的值插入~a指定的字符串中,并打印:
答案是6。
您还可以在格式字符串中包含〜%以提供换行符。
或者,通过将第二个参数指定为nil,我们可以使用format为我们生成字符串,因此:
(format nil “The answer is ~a.” (* 2 3))
将返回:
“答案是6.”
在 动物 项目中有更多使用格式的例子。
演习
1.使用格式编写故事编写程序。程序故事应该采用名称,食物和颜色; 例如:
(story “Lisa” “cheese” “green”)
并产生一个故事:
曾经有一位名叫丽莎的公主喜欢奶酪。有一天,丽莎找到了一些绿色奶酪,吃得太多,以至于她死了。结束。
http://mip.i3geek.com