在 python 中可以这样做
EMPTY, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, BPAWN = range(8)
你会如何用 lisp 做等价的事情?
最佳答案
在 Lisp 中只使用符号会更加地道。通常作为 self 评估的关键字符号:
(defparameter *chess-pieces*
'(:EMPTY :PAWN :KNIGHT :BISHOP :ROOK :QUEEN :KING :BPAWN))
定义数值是有原因的 - 有时。尤其是当您需要与外部函数对话时。在 Lisp 中,您会默认使用符号。
Common Lisp 没有真正的枚举类型。在动态类型语言中使用符号比使用数字变量有一些优势。例如,在调试期间,变量内容更具描述性:
比较:
> (setf c4 queen)
> c4
6
对比
> (setf c4 :queen)
> c4
:queen
在后一个示例中,符号值是 self 描述的。
关于python - 如何在 lisp 中定义这样的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870836/