找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1464|回复: 5

[精彩文萃] 按需输出函数定义

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-27 07:50:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. (defun namespace:name_of_namespace (symbols / define functs <-export)
  2.     (defun define (symb fn)
  3.       (setq functs (append functs (list (cons symb fn)))))
  4.     (defun <-export ( )
  5.       (foreach v symbols
  6.         (set v (cdr (assoc v functs)))))
  7.     (define 'setv (lambda (name value / oldval)
  8.       (setq oldval (getvar name))
  9.        (if (not (assoc name sysvars))
  10.         (setq sysvars (append sysvars (list (cons name oldval)))))
  11.       (setvar name value)
  12.       oldval))
  13.     (define 'unsetvars (lambda ( )
  14.       (foreach v sysvars (setvar (car v) (cdr v)))))
  15.     (define '*error* (lambda (msg)
  16.       (unsetvars)
  17.       (setq *error* olderr)
  18.       (if (and msg (/= msg "Function cancelled"))
  19.         (prompt (strcat "Error: " msg))
  20.         (princ))))
  21.     (define 'deg->rad (lambda (degrees)
  22.       (* pi (/ degrees 180.0))))
  23.     (define 'rad->deg (lambda (radians)
  24.       (* 180.0 (/ radians pi))))
  25.     ;;...functions of namespace...etc...
  26.     (<-export)
  27.   )
  28.   (defun C:SOME_COMMAND ( / olderr sysvars setv unsetvars) ;;<---- Protect imported symbols
  29.     (setq olderr *error*)
  30.     (namespace:name_of_namespace '(*error* setv unsetvars deg->rad)) ;;<---- Import functions here
  31.     (setv "cmdecho" 0) ;;use imported functions
  32.     (setv "cmdecho" 1)
  33.     ;;do command related tasks
  34.      ;;
  35.        ;;
  36.      ;;clear system variables and reset *error*
  37.     (*error* nil)
  38.     (princ)
  39.   )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-10-27 17:38:50 | 显示全部楼层
具体做什么用的?

点评

大概意思是把函数定义都写在 namespace:name_of_namespace , 程序用到哪个函数就用这个函数输出定义, 程序运行完把函数又置空, 省内存?  详情 回复 发表于 2013-10-27 18:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-10-27 18:01:35 | 显示全部楼层
本帖最后由 st788796 于 2013-10-27 18:03 编辑
Lisphk 发表于 2013-10-27 17:38
具体做什么用的?

大概意思是把函数定义都写在 namespace:name_of_namespace , 程序用到哪个函数就用这个函数输出定义, 程序运行完把函数又置空?

点评

没有置空啊.只是用几个定义几个吧.  详情 回复 发表于 2013-10-27 20:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

发表于 2013-10-27 20:49:42 | 显示全部楼层
st788796 发表于 2013-10-27 18:01
大概意思是把函数定义都写在 namespace:name_of_namespace , 程序用到哪个函数就用这个函数输出定义, 程 ...

没有置空啊.只是用几个定义几个吧.

点评

上网搜索时搜的,觉得很新颖就转过来了,没怎么看懂 修改  详情 回复 发表于 2013-10-27 21:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-10-27 21:32:39 | 显示全部楼层
xshrimp 发表于 2013-10-27 20:49
没有置空啊.只是用几个定义几个吧.

上网搜索时搜的,觉得很新颖就转过来了,没怎么看懂
修改 <-export  这个函数是不是可以置空?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

发表于 2013-10-27 21:44:39 | 显示全部楼层
可以置空,不过个人认为意义不大吧.每次调用函数先定义,再清空,每次都这样重复,没什么意义吧.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-21 06:12 , Processed in 0.190032 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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