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:19 编辑
为什么是 -1 ?
因为在内存中保存 True 在内存中字节位中全是1。
结合 上次发文内容 autolisp位运算:
0B11111111111111111111111111111111 = 0xFFFFFFFF , 这个表现为整数(有符号整数)就是 -1 。 :lolZAN.BUCUO
页:
[1]