乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 6|回复: 3

[编程交流] 符号处理功能

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-5 23:33:00 | 显示全部楼层 |阅读模式
阅读符号处理函数的Autolisp函数摘要,
 
函数(boundp sym)、(not item)和(null item)在逻辑上是相同的,它们都确保符号或项为零。但真正的不同是什么?
 
Thanx公司
谢伊
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:07:38 | 显示全部楼层
它们在语义上不同:
 
not是逻辑not运算符,即用于对值求反。
null验证符号是否绑定到nil
boundp验证非零值是否绑定到符号(即null的相反项)
 
逻辑上:
  1. (boundp 'sym) == (not (null sym))
尽管当您不希望计算符号以验证其是否包含值时,边界也很有用,例如:
  1. (foreach sym '(var1 var2 var3)
  2.    (if (not (boundp sym))
  3.        (set sym "value")
  4.    )
  5. )

使用null的等价物需要求值,这是低效的:
  1. (foreach sym '(var1 var2 var3)
  2.    (if (null (eval sym))
  3.        (set sym "value")
  4.    )
  5. )
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 00:32:32 | 显示全部楼层
这来自帮助:
 
如果没有值绑定到sym,或者它已绑定到nil,则boundp返回nil。如果sym是未定义的符号,则自动创建并绑定到nil
 
绑定到符号的值或零是我们都知道的状态
但是如果它没有定义,它怎么会被创建呢?(lisp不可能在我的代码中写新行)
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:50:22 | 显示全部楼层
我认为它的创建只是因为有人编写了代码来对该符号执行(boundp)函数。
这将使你的问题类似于为什么(setq)创建一个符号。。。
我只是认为,如果符号不存在,函数应该创建符号,其中一个函数在(setq)中的变量名后面给它一个值,(boundp)给它一个nil值,但这两个函数都会创建符号,如果符号不存在,一个函数会重新定义符号是否存在,另一个函数是布尔函数,如果符号已经包含值,则返回T。
或者我在想,也许有人可以来确认或纠正这个问题
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:35 , Processed in 0.426846 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表