baitang36 发表于 2021-10-27 10:33:05

关于lsp中的符号(symbol)

本帖最后由 baitang36 于 2021-10-27 11:04 编辑

符号(symbol)到底是个什么?
从底层进行了一点研究,发现它是一切变量和函数的基础,也就是载体。变量和函数都是通过符号来操作的。
举个简单的例子,系统函数princ
符号是 'princ,(type 'princ)返回SYM
符号的名字是“princ”这个字符串
符号的值,也就是函数pinc 的内存地址: #<SUBR @0ea0530c PRINC>

独立名称空间,就是把符号分别存放在不同地方。程序不能直接使用不是自己所属空间的符号。
别的空间的符号,可以通过export来访问。

通常情况下,用户程序只能使用autolisp空间的符号。
系统的保留函数(Undocument Function)是属于lpp空间,如果想要使用保留函数 ,需要解决一个跨空间的问题。


masterlong 发表于 2021-10-27 11:27:48

(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

反正我是搞不明白这之间的关系了

不死猫 发表于 2021-10-27 11:32:21

用现有的Alisp和Vlisp函数做不到的。
如果不用写出文件方式处理,只能借助其他语言。

baitang36 发表于 2021-10-28 09:42:00

不死猫 发表于 2021-10-27 11:32
用现有的Alisp和Vlisp函数做不到的。
如果不用写出文件方式处理,只能借助其他语言。

没发现修改符号值的保留函数

nzl1116 发表于 2021-10-28 09:52:26

baitang36 发表于 2021-10-28 09:42
没发现修改符号值的保留函数

改符号值,用set啊

baitang36 发表于 2021-10-28 10:50:08

nzl1116 发表于 2021-10-28 09:52
改符号值,用set啊

对啊,把保留函数的值set到一个正常的变量中
页: [1]
查看完整版本: 关于lsp中的符号(symbol)