本帖最后由 fangmin723 于 2025-1-21 08:11 编辑
在编写lisp时,有时候可能很多个函数,有主函数,子函数。
子函数可能引用主函数的变量,主函数也可能引用到子函数的变量,还有子函数和子函数之间的变量引用。
这就涉及到一个问题,在其他函数中引用了此函数的变量,在函数结束时,需要将变量的值清空,那么如果在此函数结束时清空了变量,而后面的函数在执行时又引用了此函数的变量,那么就会出错。
这个问题解决有两种方法,
第一种:是在借用的函数中设置全局变量,这样就不影响将借用变量在被借用的函数中设置为局部变量,在函数内变量的值变更后,用返回的方式再次赋值给变量,这样就不影响变量的最后清空销毁;
第二种:就是将所有互相引用的局部变量全部在主函数中设为局部变量,从而在程序在最终结束时变量的清空销毁;
但是,在实际运用中,变量可能在一个函数中引用,也可能在多个函数中引用,在这种情况下,就不便使用第一种方法,大部分都是第二种情况,
这就涉及到一个问题,如果相互引用的变量过多,在程序完全执行完后,变量没有设为局部变量而清空销毁,在其他程序也有相同名称变量时,可能会影响其他程序的功能和使用。
所以变量的清空和销毁是有必要的
引用的函数变量过多,那变量整理就变得复杂而头疼,所以就写这个工具获取并去重
- ;;Lisp函数已定义的局部变量获取和去重 推荐的文件内容格式
- (defun c:主函数命令(/ 主函数局部变量) 主函数逻辑代码 (prin1))
- (defun 子函数1(/ 子涵所有局部变量[子函数1独用局部变量、子涵及之间的引用变量]) 子函数1逻辑代码)
- (defun 子函数2(/ 子涵所有局部变量[子函数2独用局部变量、子涵及之间的引用变量]) 子函数2逻辑代码)
- (defun 子函数3(/ 子涵所有局部变量[子函数3独用局部变量、子涵及之间的引用变量]) 子函数3逻辑代码)
- (defun 子函数4(/ 子涵所有局部变量[子函数4独用局部变量、子涵及之间的引用变量]) 子函数4逻辑代码)
- ;;我常用的最终代码格式
- (defun c:主函数命令(主函数局部变量、子涵及之间的引用变量、所有子函数名)
- (progn;;;子函数
- (defun 子函数1(/ 子函数1独用局部变量) 子函数1逻辑代码)
- (defun 子函数2(/ 子函数2独用局部变量) 子函数2逻辑代码)
- (defun 子函数3(/ 子函数3独用局部变量) 子函数3逻辑代码)
- (defun 子函数4(/ 子函数4独用局部变量) 子函数4逻辑代码)
- .
- .
- .
- )
- 主函数逻辑代码
- (prin1)
- )
|