张和平 发表于 2013-3-29 21:16:59

G:、I:等是神马意思啊?

我在论坛上看到大家定义函数时,除了(defun C:XXX()...)这种格式以外,还用了(defun G:XXX()...)、(defun I:XXX()...)等格式,后面两种是什么意思啊?
另外,我还听说过"局部子函数"这个讲法,那么什么是局部子函数呢?怎么定义局部子函数呢?

自贡黄明儒 发表于 2013-3-29 21:52:54

(defun G:XXX()...)、(defun I:XXX()...)里面的冒号,同ABC....之类的符号应该没有什么区别。

张和平 发表于 2013-3-29 22:20:15

自贡黄明儒 发表于 2013-3-29 21:52 static/image/common/back.gif
(defun G:XXX()...)、(defun I:XXX()...)里面的冒号,同ABC....之类的符号应该没有什么区别。

也就是说这些也是为了区别函数名儿用的?起特殊作用的只有C:?

ll_j 发表于 2013-3-29 22:24:30

defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀”可以增加程序的可读性,还可能避免一些不必要的冲突定义。我在一些大程序中,喜欢用程序名作为前缀,比如ca.lsp中,函数名用“ca_”作为前缀,全局变量则用“ca:”作为前缀,这样,就不太容易发生冲突了。

所谓“局部子函数”只是一种俗称,其实也是一种普通的函数定义,但这类函数也有一些自己的特点,就是在函数中定义函数,而函数名则作为“母”函数的局部变量,也就是说,程序运行结束后,这些“子”函数也不复存在了。
比如:
(defun fun(/ fun1 fun2)
(defun fun1()
      ......
)
(defun fun2()
   ......
)
)
这里的fun1和fun2就可以理解为“局部子函数”。

张和平 发表于 2013-3-29 22:28:54

ll_j 发表于 2013-3-29 22:24 static/image/common/back.gif
defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀” ...

哦哦哦,原来如此,,

Throne 发表于 2013-9-28 19:29:06

ll_j 发表于 2013-3-29 22:24 static/image/common/back.gif
defun函数定义的变量名只有“c:”有特殊意义,其它都只是一个普通的变量名,但有时在程序中使用这些“前缀” ...

谢谢大侠,收益了

snowfq 发表于 2013-9-30 14:30:48

收益了,谢谢

mccad 发表于 2013-9-30 17:19:40

应该还有一个defun S::XXXXX() ,用于在加载时自动执行
页: [1]
查看完整版本: G:、I:等是神马意思啊?