软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
AutoLisp笔记(二)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

            赋值与求值函数
                何志丹
(SetQ <sym1> <exp1> [<sym2> <exp2>]...)
 偶数位上的参数求值,并把求值的结果赋给前一个符号原子。SetQ 返回最后一个表达式的值。
注意:
1,SetQ是串行函数 ,即对前面的符号先赋值,后面的符号后赋值。
2,SetQ只是简单地加了一个内存指针,这个指针是从奇数位上的符号指向其后偶数位上的数据所指的内存数据。
例子:
(SetQ x 2.4 y (+ x 2.0)
返回值4.5

(Set <sym> <expr>)
Set函数把参数二的值赋给参数一的值,返回参数二的值。
例子:
(SetQ c "AB")
(SetQ d 'c)
(kSet D 2.0)
返回值为2.0 ,c的值为2.0

禁上求值函数Quote
(Quote <epxr>)
Quote函数的功能是阻止求值器对其参数求值,返回没有值的S-表达式。
例子:
(Quote (+ 6 5))
返回值是(+ 6 5)而不是11。
注意:
1,此函数的作用范围是紧跟其后的S-表达式。
2,单引号是简写,只能用在表达中,不能从键盘输入一个单引号引起来的表达式直接响应AutoCAD的命令提示。
3,(CDR (1 2 3))是错误的,为了求该表的CDR,求值器先到表(1 2 3)求值,求值器把1作为函数名,于是出错。


Function 函数
与Quote函数基本相同,当<expr> 为函数名时,Fuction就把该函数的局部变量约束到当前环境中。
如:
(apply  (function +) '(2.0 4.0 5.5))
返回值11.5

再求值函数
(eval <expr>)
先对变量expr求值,把结果返回给eval,eval对它再次求值。
如:
(SetQ x  '(* 5.0 6.0))
(eval x)
返回值30.0

小结:
1,在SetQ函数中符号名和SetQ中sym的值不能和AutoLisp的内部符号和内部函数名(在自带的编辑器中以不同的颜色显示)相同,否刚会使这引起些符号失去原有的意义。
2,Quote函数只能阻止对其后的S-表达式的一次求值,有时被 阻止的表达式需要转化成调用被求值,可以用eval.
3,利用eval,我们可以把程序中用到的数据结构独立于程序。
如:
(SetQ datastr  '(list x y z))




相关文章

相关软件