【发布时间】:2013-06-30 01:33:46
【问题描述】:
我已经编写了这个打印出板子状态的函数,但最后,由于没有返回这个函数打印一个零!
功能:
(defun show-board (board)
(dotimes (number 8)
(dotimes (number2 8)
(let ((pos (aref board number number2)))
(cond
((equal pos 0) (format t "~a " "B"))
((equal pos 1) (format t "~a " "P"))
(t (format t "~a " "L")))))
(format t "~%")))
板是一个 8x8 阵列!
命令行上的函数调用输出:
B P B P B P B P
P B P B P B P B
B P B P B P B P
P B P B P B P B
B P B P B P B P
P B P B P B P B
B P B P B P B P
P B P B P B P B
NIL
我怎样才能摆脱 NIL??
【问题讨论】:
-
这很挑剔,但值得指出的是,
show-board没有打印NIL。如果您在 REPL 中并执行CL-USER> (show-board ...),您将看到 nil,但如果您执行CL-USER> (progn (show-board) 2),则不会(但您会看到2)。 REPL 打印最后一个评估表单的值。这意味着从任何调用show-board的应用程序代码中,您都不会看到NIL,因此虽然它对REPL 来说是一个不错的选择,但您通常不需要担心。即使使用(values),您仍然会得到(list (show-board)) => (NIL)。
标签: arrays format lisp null read-eval-print-loop