G:、I:等是神马意思啊?
我在论坛上看到大家定义函数时,除了(defun C:XXX()...)这种格式以外,还用了(defun G:XXX()...)、(defun I:XXX()...)等格式,后面两种是什么意思啊?另外,我还听说过"局部子函数"这个讲法,那么什么是局部子函数呢?怎么定义局部子函数呢?
(defun G:XXX()...)、(defun I:XXX()...)里面的冒号,同ABC....之类的符号应该没有什么区别。 自贡黄明儒 发表于 2013-3-29 21:52 static/image/common/back.gif
(defun G:XXX()...)、(defun I:XXX()...)里面的冒号,同ABC....之类的符号应该没有什么区别。
也就是说这些也是为了区别函数名儿用的?起特殊作用的只有C:? defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀”可以增加程序的可读性,还可能避免一些不必要的冲突定义。我在一些大程序中,喜欢用程序名作为前缀,比如ca.lsp中,函数名用“ca_”作为前缀,全局变量则用“ca:”作为前缀,这样,就不太容易发生冲突了。
所谓“局部子函数”只是一种俗称,其实也是一种普通的函数定义,但这类函数也有一些自己的特点,就是在函数中定义函数,而函数名则作为“母”函数的局部变量,也就是说,程序运行结束后,这些“子”函数也不复存在了。
比如:
(defun fun(/ fun1 fun2)
(defun fun1()
......
)
(defun fun2()
......
)
)
这里的fun1和fun2就可以理解为“局部子函数”。
ll_j 发表于 2013-3-29 22:24 static/image/common/back.gif
defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀” ...
哦哦哦,原来如此,, ll_j 发表于 2013-3-29 22:24 static/image/common/back.gif
defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀” ...
谢谢大侠,收益了 收益了,谢谢 应该还有一个defun S::XXXXX() ,用于在加载时自动执行
页:
[1]