LISP也能实现函数重载
cond或if的条件中使用type,numberp等函数,LISP也能模仿C++函数的重载功能,函数参数数量只能有一个定值,以下举例说明:;;HGCAD.COM
;;以dxf索引取出对应dxf值,可以接受某一对象的图元名或图元表。
(defun HG-GetDXF (en-el dxf)
(cond ((= (type en-el) 'ENAME) (cdr (assoc dxf (entget en-el))))
((= (type en-el) 'LIST)(cdr (assoc dxf en-el)))
(t nil)
)
)
以下是type函数返回值:
数据类型type 函数返回的数据类型说明
ENAME图元名
EXRXSUBR外部 ObjectARX 应用程序
FILE文件描述符
INT整数
LIST表
PAGETB函数分页表
PICKSET选择集
REAL浮点数
SAFEARRAY安全数组
STR字符串
SUBR内部 AutoLISP 函数或由编译(FAS 或 VLX)文件加载的函数从 AutoCAD 命令提示中加载的 LISP 源文件函数也可能作为 SUBR 出现。
SYM符号
VARIANT变体
USUBR从 LISP 中加载的用户定义函数
VLA-objectActiveX 对象
来源 http://hgcad.com/blog-2-34.html
十年前的帖子竟然还不过时 参数数量是硬伤,所以只能用表传入。
页:
[1]