明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2240|回复: 2

LISP也能实现函数重载

[复制链接]
发表于 2011-8-29 08:41:56 | 显示全部楼层 |阅读模式
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

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-8-9 17:10:11 | 显示全部楼层
十年前的帖子竟然还不过时
回复 支持 1 反对 0

使用道具 举报

发表于 2021-8-7 21:07:19 | 显示全部楼层
参数数量是硬伤,所以只能用表传入。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 09:06 , Processed in 0.147121 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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