我最近正在尝试学习一些 Lisp(Common Lisp),我想知道是否有一种方法可以像在 C 中通过枚举那样为常量命名。
我不需要枚举的完整功能集。最后,我只想拥有快速和可读的代码。
我尝试过全局变量和小函数,但总是伴随着性能下降。将数字插入代码总是更快。
最佳答案
在 Lisp 中进行枚举的正常方法是使用符号。符号被固定(替换为指向它们在符号表中的条目的指针),因此它们与整数一样快,并且与其他语言中的枚举常量一样可读。
那么你可以在 C 中的什么地方写:
enum { apple, orange, banana, };
在 Lisp 中,您可以直接使用 'apple
、'orange
和 'banana
。
如果你需要一个枚举的类型,那么你可以用deftype
定义一个。 :
(deftype fruit () '(member apple orange banana))
然后你可以在declare
、typep
、typecase
等中使用类型fruit
,< del>并且您可以编写专门针对该类型的通用函数。
关于enums - 等同于 C 枚举的 Common Lisp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578290/