arrays - 如何避免最后打印nil?

标签 arrays format lisp null read-eval-print-loop

我编写了这个函数来打印板的状态,但最终,由于没有返回值,该函数打印出 nil!

功能:

(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?

最佳答案

您可以摆脱代码中的多种格式:

通常在函数式语言中我会返回一个值。退回主板本身是有意义的。由于这样的函数通常是从游戏逻辑中调用的,因此返回值可能有用,并且对输出并不重要。

(defun show-board (board)
  (dotimes (i 8)
    (dotimes (j 8)
      (write-string (case (aref board i j)
                      (0         "B ")
                      (1         "P ")
                      (otherwise "L "))))
    (terpri))
  board)

关于arrays - 如何避免最后打印nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17429729/

相关文章:

php - 以给定格式打印 JSON

python:交换两个数组的部分

javascript - 在变量中执行循环(for)

arrays - 在python中将stdin行转换为 "float/int"数组的更简单方法

java - 以所需方式格式化输出

php - 使用PHPExcel将excel文件内容导入MySQL数据库(格式问题)

scheme - 我在评估此方案功能时遇到问题?

lisp - 是否有使用正序求值的 Scheme 解释器?

lisp - Common Lisp 中的 str_replace?

c - 测试 2 次刺痛是否有相同的单词 (C)