我希望输出像0 1,但下面的代码只打印nil.我使用type-of来测试(第一个十六进制),它是整数.%d应该有效,对吧?如果我使用消息,它可以在Emacs中使用.
(defun draw-board (board)
(loop for x below 2
for hex = (aref board x)
do (format "%d " (first hex))))
(draw-board [(0 2) (1 2) (0 3) (0 2)])
Run Code Online (Sandbox Code Playgroud)
小智 6
1- emacs lisp格式不是Common Lisp格式.注意缺少的参数!
(format "%d" 42) == (cl:format NIL "~D" 42)
Run Code Online (Sandbox Code Playgroud)
2-因此你的循环所做的唯一事情是:
- to check that board is a vector with at least two slots. (aref
signals an error if the index is out of bound).
- to check that each of those two slots are lists (first signals an
error when passed a non list).
- to check that the first element of each each of those two slots
are numbers. (format signals an error when you pass a non number
for %d).
Run Code Online (Sandbox Code Playgroud)
就这样.
你从未说过要打印任何东西.
要打印某些内容,必须将其放在缓冲区中,并使用ps-print-buffer:
(defun draw-board (board)
(with-temp-buffer
(loop for x below 2
for hex = (aref board x)
do (insert (format "%d " (first hex))))
(ps-print-buffer)))
Run Code Online (Sandbox Code Playgroud)