vitalgg 发表于 2024-11-28 11:02:30

lisp中的自解析符号

本帖最后由 vitalgg 于 2024-11-28 11:03 编辑

在commonlisp 中,对符号进行求值,其值就是符号本身,这种符号称为自解析符号。

常用的如 t nil :vlax-true :vlax-false 以及其它的以 : 开头的符号。

autolisp 是 commonlisp的子集

在 autolisp 中定义的基本符号,如 :vlax-true:vlax-false :vlax-null 以及:vlr-* 系列函数,均为自解析符号,在编程时不能用数值代替。

在visuallisp中,当dump 一个对象时,:vlax-true 可能会显示 为 -1。但是在lisp代码中,不能用-1代替 :vlax-true 。这与autolisp中定义的以 ac开头的常量值不同。需注意区分。

在用户环境中,我们自己定义的以:开头的符号不遵守这个约定。

如下图定义的符号 :abc 与一般符号没有区别。其值不是自身,而是我们给定的值。



在公众号中回复 ‘术语’ ,了解更多 lisp 概念。

http://bbs.mjtd.com/data/attachment/forum/202312/21/211339e6j76hp6nzc95n8a.png



原文: https://mp.weixin.qq.com/s/VzLhTOx4uPb4NOgzi6UqWg

vitalgg 发表于 2024-11-28 11:15:25

本帖最后由 vitalgg 于 2024-11-28 11:19 编辑

为什么是 -1 ?
因为在内存中保存 True 在内存中字节位中全是1。
结合 上次发文内容 autolisp位运算:
0B11111111111111111111111111111111 = 0xFFFFFFFF , 这个表现为整数(有符号整数)就是 -1 。

chslwj521 发表于 2024-11-28 16:10:11

:lolZAN.BUCUO
页: [1]
查看完整版本: lisp中的自解析符号