明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: fangmin723

Lisp函数已定义的局部变量获取和去重

  [复制链接]
发表于 2025-5-10 11:09:22 | 显示全部楼层
本帖最后由 zhangrunze 于 2025-5-10 11:23 编辑

蛮不错的工具,感谢分享。
请教下,“defun 子函数” 在代码“defun c:主函数” 中作用于“defun c:主函数”中,还是作用于全局所有主函数?  其他主函数也可以用“defun 子函数”?


“defun 子函数”作用域是全局还是就在“defun c:主函数”中?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-10 16:53:32 | 显示全部楼层
本帖最后由 fangmin723 于 2025-5-10 16:55 编辑
zhangrunze 发表于 2025-5-10 11:09
蛮不错的工具,感谢分享。
请教下,“defun 子函数” 在代码“defun c:主函数” 中作用于“defun c:主函数 ...

这个需要分情况,如果子函数名在主函数的局部变量中,那就作用在“defun c:主函数”中,否则,当主函数运行一次过后,将作用于全局
回复 支持 反对

使用道具 举报

发表于 2025-5-10 18:16:48 | 显示全部楼层
谢谢大师分享!
回复 支持 反对

使用道具 举报

发表于 2025-5-11 20:23:20 | 显示全部楼层
fangmin723 发表于 2025-5-10 16:53
这个需要分情况,如果子函数名在主函数的局部变量中,那就作用在“defun c:主函数”中,否则,当主函数运 ...

感谢指明方向,百度了下~
看看可以这样理解是否正确???
通过变量名的设置决定是否作用于全局;

函数的作用域取决于其定义方式。
  1. (defun c:tt (/ bb-dxf)
  2.     (defun BB-DXF ()
  3.         ; 函数体
  4.     )
  5. )
由于bb-dxf被列在c:tt函数的局部变量表中(即/ bb-dxf),它将被限定为c:tt函数的局部函数只能在c:tt函数内部调用bb-dxfc:tt函数执行结束后,bb-dxf会被释放,无法在其他函数或全局环境中调用。
虽然defun通常用于定义全局函数,但此处因bb-dxf被显式声明为局部变量,其作用域被强制限制。;若需让bb-dxf成为全局函数,应移除局部变量声明:
  1. (defun c:tt ()
  2.     (defun BB-DXF ()
  3.         ; 函数体
  4.     )
  5. )
此时bb-dxf会成为全局函数,可在其他位置调用;


回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-12 10:43:39 | 显示全部楼层
zhangrunze 发表于 2025-5-11 20:23
感谢指明方向,百度了下~
看看可以这样理解是否正确???
通过变量名的设置决定是否作用于全局;

理解正确
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-22 15:33 , Processed in 0.167685 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表