关于lsp中的符号(symbol)
本帖最后由 baitang36 于 2021-10-27 11:04 编辑符号(symbol)到底是个什么?
从底层进行了一点研究,发现它是一切变量和函数的基础,也就是载体。变量和函数都是通过符号来操作的。
举个简单的例子,系统函数princ
符号是 'princ,(type 'princ)返回SYM
符号的名字是“princ”这个字符串
符号的值,也就是函数pinc 的内存地址: #<SUBR @0ea0530c PRINC>
独立名称空间,就是把符号分别存放在不同地方。程序不能直接使用不是自己所属空间的符号。
别的空间的符号,可以通过export来访问。
通常情况下,用户程序只能使用autolisp空间的符号。
系统的保留函数(Undocument Function)是属于lpp空间,如果想要使用保留函数 ,需要解决一个跨空间的问题。
(setq hh +)
(hh 1 2)==>3
(if T 1 2)==> 1
(setq T NIL)
(if T 1 2)==> 2
(= 1 1) ==> T
(= 1 2) ==> NIL
(equal T (= 1 1))==> NIL
反正我是搞不明白这之间的关系了 用现有的Alisp和Vlisp函数做不到的。
如果不用写出文件方式处理,只能借助其他语言。 不死猫 发表于 2021-10-27 11:32
用现有的Alisp和Vlisp函数做不到的。
如果不用写出文件方式处理,只能借助其他语言。
没发现修改符号值的保留函数 baitang36 发表于 2021-10-28 09:42
没发现修改符号值的保留函数
改符号值,用set啊 nzl1116 发表于 2021-10-28 09:52
改符号值,用set啊
对啊,把保留函数的值set到一个正常的变量中
页:
[1]