AUTO-LISP函数参考.docx_第1页
AUTO-LISP函数参考.docx_第2页
AUTO-LISP函数参考.docx_第3页
AUTO-LISP函数参考.docx_第4页
AUTO-LISP函数参考.docx_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AUTO LISP函数参考1(10版本) 以下为十年前纯手工录入的函数参考手册,以分享给爱好LISP这方面的朋友参考!AutoLISP提供了大量的预定义函数。若将函数名(大小写都可)作为表中的第一个元素函数变元(若有的话)作为表中后面的元素,就可以调用那个函数。本章按字母顺序列出AutoLISP所有基本函数。用户会发现其中许多函数都是标准函数,可在LISP程序设计语言中找到。还有一些函数是由 AutoCAD提供的且专用于交互图形环境。1 FLATLAND 系统变量与老版本的兼容性 AutoLISP版本10支持AutoCAD的最新增强型三维图形功能,则时继续保证与AutoCAD老版本的兼容性。FLATLAND系统变量就是用来控制该兼容性的。当FLATLAND为零时,实现新三维功能;否则各函数操作与AutoLISP版本9的一样。FLATLANDR的设置作用于下列AutoLISP函数: DISTANCE GRREAD POLAR ENTGET INITGET TBLNEXT GETDIST INTERS TBLSEARCH GETPOINT OSNAP在各函数说明中,已注明FLATLAND对上述函数起作用的方式。2 ( + .) 这个函数返回所有的总和。其中的可以是整型或实型的。如果所有的都是整数,其结果也是整数;如果其中有一个是实型的,那么其它整型数将转换为实型数结果将是实型数。例如: (+ 1 2) returns 3 (+ 1 2 3 4.5) returns 10.5 (+ 1 2 3 4.0) returns 10.03 ( - .) 这个函数把第一个减去第二个,返回它们的差。如果给定的多于两个,那么将第一个减去其后所有数之和,并返回最后的结果。如果只给了一个,即返回零减这个的结果。此函数中的可以是实型或整型,按标准规则进行类型转换。例如: (- 50 40) returns 10 (- 50 40.0 2) returns 8.0 (- 50 40.0 2.5) returns 7.5 (- 8) returns -84 (* .) 这个函数返回所有的乘积.其中可以是实型或整型.按标准规则进行类型转换例如: (* 2 3) returns 6 (* 2 3 4.0) returns 24.0 (* 3 -4.5) returns -13.55 (/ .) 这个函数将第一个除以第二个,返回其商.如果给出的多于两个,则把第一个除以其它所有的乘积,并返回最后的商.此函数中的可以是实型或整型,类型的转换按标准规则进行.例如: (/ 100 2) returns 50 (/ 100 2.0) returns 50.0 (/ 100 20.0 2) returns 2.5 (/ 135 360) returns 0 (/ 135 360.0) returns 0.3756 (= .) 这是等于关系函数.如果所有指定的在数值上是相等的,则返回T;否则返回空(nil).这个函数适用于数和字符串.例如: (= 4 4.0) returns T (= 20 388) returns nil (= 2.4 2.4 2.4) returns T (= 499 499 500) returns nil (= me me) returns T (= me you) returns nil7 (/= .) 这是一个不等于关系函数.如果数值上不等于,则返回T;否则返回nil.如果提供的多于两个,则函数无定义.例如: (/= 10 20) returns T (/= you you) returns nil (/= 5.43 5.44) returns T8 ( .) 这是一个小于关系函数.如果第一个值小于第二个,则返回T;否则返回nil.如果所给的多于两个,那么当每个都小于其右边的时,则返回T.例如: ( 10 20) returns T ( b c) returns T ( 357 33.2) returns nil ( 2 3 88) returns T ( 2 3 4 4) returns nil9 (= .) 这是一个小于或等于关系函数.如果第一个值大于或等于第二个原子,则返回T;否则返回nil.如果所给的多于两个,则当每一个都小于或等于其右边的时,才返回T.例如: (= 10 20) returns T (= b b) returns T (= 357 33.2) returns nil (= 2 9 9) returns T ( .) 这是一个大于关系函数.如果第一个值大于第二个,则返回T;否则返回nil.若所给定的多于两个,当每个都大于其右边的时,则返回T. 例如: ( 120 17) returns T ( c b) returns T ( 3.5 1792) returns nil ( 77 4 2) returns T ( 77 4 4) returns nil11 (= .) 这是一个大于或等于关系函数.如果第一个值大于或等于第二个,则返回T;否则返回nil.如果给出的多于两个,当每一个都大于或等于其右边的时才返回T. 例如: (= 120 17) returns T (= c c) returns T (= 3.5 1792) returns nil (= 77 4 4) returns T (= 77 4 9) returns nil12 ( ) 这个函数返回的按位非(NOT),即补码.必须为整数.例如: ( 3) returns -4 ( 100) returns -101 ( -4) returns 313 (1+ ) 这个函数返回加1(增量)的结果. 可以是实数或整数. 例如: (1+ 5) returns 6 (1+ -17.5) returns -16.514 (1- ) 这个函数返回加1(增量)的结果. 可以是实型或整型数. 例如: (1- 5) returns 4 (1- -17.5) returns -18.515 (abs ) 这个函数返回的绝对值. 可以是实型数或整型的. 例如: (abs 100) returns 100 (abs -100) returns 100 (abs -99.25) returns 99.2516 (and .) 这个函数返回所列出的表达式的逻辑与(AND). 如果其中任何一个表达式的结果等于nil,则停止求值并返回;否则返回T. 例如,对于下面给定的赋值: (setq a 103) (setq b nil) (setq c string)那么 (and 1.4 a c) returns T (and 1.4 a b c) returns nil17 (angle ) 这个函数返回从UCS坐标系统点到UCS坐标系统的一直线的角度,该角度从当前作图平面的X轴开始反时针方向计算(以弧度为单位). 如果提供了三维点,则将其投影至当前作图平面. 例如: (angle (1.0 1.0) (1.0 4.0) return 1.5708 (angle (5.0 1.33) (2.4 1.33) return 3.1415918 (angtos ) 这个函数处理(实型数,单位为弧度),返回一个对应于的字符串.该字符串是根据所设置的、及AutoCAD DIMZIN变量,对编辑后所得. 其中变元是一个整型数,它指示完成什么类型的编辑,如下所示: ANGTOS方式 编辑格式 - 0 度 1 度/分/秒 2 梯度 3 弧度 4 测地单位其中变元是一个整型数,它选择所需要的十进制精度的小数位数. 和与AutoCAD系统变量AUNITS和AUPREC相对应,如果没有指明和,则使用AUNITS和AUPREC的当前值. 例如,已知DIMZIN=0和下面的赋值: (setq pt1 (5.0 1.33) (setq pt2 (2.4 1.33) (setq a (angle pt1 pt2)那么, (angtos a 0 0) returns 180 (angtos a 0 4) returns 180.0000 (angtos a 1 4) returns 180d00 (angtos a 3 4) returns 3.1416r (angtos a 4 2) returns W ANGTOS可接受一负变元,但总是先将其化为相当的正值(在0 2弧度间),然后再执行指定的变换. 例如: (angtos 0.785398 0 4) returns 45.0000 (angtos -0.785398 0 4) returns 315.000019 (append .) 这个函数将所有的表( )放置在一起,作为一个表. 例如: (append (a b) (c d) returns (a b c d) (append (a)(b) (c)(d) returns (a)(b)(c)(d) APPEND需要的变元必须是表.20 (apply ) 它执行由给定的函数,指定了函数的变元. 例如: (apply + (1 2 3) return 6 (apply strcat (a b c) return abc APPLY既可用于内部函数(子程序),也可用于用户定义的函数(即那些用DEFUN或者 LAMBDA产生的函数).21 (ascii ) 这个函数返回中第一个字符的ASCII字符码(整数).它和BASIC语言中的ASC函数相似. 例如: (ascii A) return 65 (ascii a) return 97 (ascii BIG) return 6622 (assoc ) 这个函数在以作为关键字进行搜索,返回中对应元素的值.如果在关联表中找不到作为关键字的,ASSOC返回nil. 例如,假设表al定义为: ( name box) (width 3) (size 4.7263) (depth 5) )那么, (assoc size a1) returns (size 4.7263) (assoc weight a1) returns nil关联表常用于储存数据,这些数据可通过关键字存取.它和程序设计语言的数组或结构相似.本章后面描述的SUBST函数提供了一种方便的方法可把关联表中与关键字关联的值进行替换.23 (atan ) 如果没有给出,ATAN将返回的反正切值,其单位为弧度.可以为负值;返回的角度的范围为:-pi 到 +pi弧度. 例如: (atan 0.5) returns 0.463648 (atan 1.0) returns 0.785398 (atan -1.0) returns -0.785398 (angtos (atan -1.0) 0 4) returns 315.0000如果给出和,则返回/的反正切值,其单位为弧度.如果为零,即返回的角度值为1.570796弧度(90度或-90度),这取决于是正数还是负数.例如: (atan 2.0 3.0) returns 0.588003 (angtos (atan 2.0 3.0) 0 4) returns 33.6901 (atan 2.0 -3.0) returns 2.55359 (angtos (atan 2.0 -3.0) 0 4) returns 146.3099 (atan -2.0 3.0) returns -0.588003 (atan -2.0 -3.0) returns -2.55359 (atan 1.0 0.0) returns 1.5708 (angtos (atan 1.0 0.0) 0 4) returns 90.0000 (atan -0.5 0.0) returns -1.5708 (angtos (atan -0.5 0.0) 0 2) returns 270.0024 (atof ) 这个函数将字符串换为实型数. 并返回此值. 例如: (atof 97.1) returns 97.1 (atof 3) returns 3.025 (atoi ) 这个函数将字符串转换为整数,并返回此值. 例如: (atoi 97) returns 97 (atoi 3) returns 3 (atoi 3.9) returns 326 (atom ) 如果是一个表,此函数返回nil;否则返回T. 任何不是表的东西都被认为是一个原子(atom). 例如,对于以下的赋值: (setq a (x y z) (setq b a)那么, (atom a) returns T (atom a) returns nil (atom b) returns T (atom b) returns T (atom (a b c) returns nil有些LISP对ATOM的解释有差异,因此在使用互相移植的程序时要加以注意.27 (Boole ) 这是一个通用的位方式boolean函数.其中是一个0到15之间的整数,它表示16种可能的双变量Boolean函数中的一种.后面的整型变元根据这个函数和下列的真值表进行方式(即逻辑)组合: 位 - 0 0 8 0 1 4 1 0 2 1 1 1的每一位和的相应位配对,选择真值表中的一水平行.其结果位是0或1,将取决于对应真值表中这一行中位的设置情况.如果中位的设置适当,结果位就为1,否则结果位为0. 的一些值等效于标准的Boolean操作:AND, OR , XOR和NOT,如下所示: func 操作 结果位为1时的条件 - 1 AND 两个输入位都为1 6 XOR 只有其中一个输入位为1 7 OR 有一个或两个输入位为1 8 NOT 两个输入位都为0(即补码)例如: (Boole 1 12 5) 指定了数12和5的逻辑与(AND).其结果为4.同样: (Boole 6 6 5) 指定了数6和5的逻辑异或(XOR),返回结果为3 可以使用的其他值来完成其它的Boolean操作,这些操作可能没有标准名称.例如,如果为4,那么当中的位是1而中的相应位是零时,其结果位才为1. 因此: (Boole 4 3 14)将返回结果12.28 (boundp ) 如果有一个值约束它(不管值的范围),那么此函数返回T;若没有值约束(或受nil约束),则返回nil. 例如,对于下列赋值: (setq a 2) (setq b nil)那么: (boundp a) returns T (boundp b) returns nil29 caar, cadr, cddr, cadar等等 AutoLISP支持CAR和CDR的连接,其深度可达四级. 例如,已知赋值: (setq x (a b) c d)那么: (caar x) is equivalent to (car (car x) returning a (cdar x) is equivalent to (cdr (car x) returning (b) (cadar x) is equivalent to (car (cdr (car x) returning b (cadr x) is equivalent to (car (cdr x) returning c (cddr x) is equivalent to (cdr (cdr x) returning (d) (caddr x) is equivalent to (car (cdr (cdr x) returning d 在AutoLISP中常使用CADR来取得二维点或三维点的Y坐标(即由两个或三个实数组成的表中第二个元素). 同样,使用CADDR可取得三维点的Z坐标. 例如,已知赋值: (setq pt2 (5.25 1.0) (a 2D point) (setq pt3 (5.25 1.0 3.0) (a 3D point)那么: (car pt2) returns 5.25 (cadr pt2) returns 1.0 (caddr pt2) returns nil (car pt3) returns 5.25 (cadr pt3) returns 1.0 (caddr pt3) returns 3.030 (car )这个函数返回的第一个元素.如果是空的,则返回nil. 例如: (car (a b c) returns a (car (a b) c) returns (a b) (car ( ) returns nil31 (cdr )这个函数返回除中第一个元素以外的所有元素的表. 如果是空的,则返回nil.例如: (cdr (a b c) returns (b c) (cdr (a b) c) returns (c) (cdr () returns nil如果变元是一个点对,即一对中间用点隔开的元素表(见下面的CONS),CDR则返回没有表括号的第二个元素. 例如: (cdr (a . b) returns b (cdr (1 . TEXT) returns TEXT32 (chr )这个函数把代表ASCII码的整型数转换为只有一个字符的字符串,并返回此结果(类似于BASIC中的CHR$函数). 例如: (chr 65) returns A (chr 66) returns B (chr 97) returns a33 (close )这个函数关闭指定的文件,返回nil. 其中是从调用OPEN函数得到的. 在CLOSE函数执行之后,此文件描述符就不再有效.例如,假设X是一个有效的打开文件的描述符. (close x)将关闭与X相关联的文件,返回nil.34 (command .)这个函数在AutoLISP内部执行AutoCAD命令,它总是返回nil. 其中代表AutoCAD的命令及其子命令;对每一个变元都作处理,然后作为对相应提示的响应送给AutoCAD.命令名和选择项作为字符串传送,二维点作为两个实数的表传送,三维点作为三个实数的表传送.只有当AutoCAD发出Command:提示时,命令名才被AutoCAD识别.例如: (setq pt1 (1.45 3.23) (setq pt2 (getpoint Enter a point: ) (command line pt1 pt2) (command )假设AutoCAD的Command:提示已出现,那么以上的表达式将为点pt1置值,提示用户输入点pt2,执行AutoCAD的LINE命令,用两点作为此命令的输入.COMMAND的变元可以是字符串,实数,整数或点,这要看AutoCAD命令执行时需要什么.一个空字符串()等效于在键盘上打一个空格.调用COMMAND而不加任何变元等效于在键盘上按CTRL-C键,它将取消AutoCAD的大多数命令.如果AutoCAD系统变量CMDECHO(可通过SETVAR和GETVAR存取)被置为零,那么从COMMAND函数中执行的命令将不会在屏幕上显示.COMMAND函数是在AutoLISP中调用AutoCAD命令的一种基本方法.在COMMAND函数内不能使用GETxxx用户输入函数(GETANGLE,GETSTRING,GETINT,GETPOINT等).如果试图用GETxxx函数,则会显示出错信息:error: AutoCAD rejected function出错:AutoCAD拒绝执行函数,并中止函数的执行.如果需要提示,则应提前发出GETxxx函数,如上例所示,或把它们放在几个连续的COMMAND函数调用中间.AutoCAD的DTEXT和SKETCH命令均能直接从键盘和数字化仪读入,因此不能和AutoLISP的COMMAND函数一起使用.同样,COMMAND函数不能用于执行PLOT,PRPLOT或SCRIPT命令. 为用户输入暂停如果在执行AutoCAD命令过程中,预定义符号PAUSE是作为COMMAND函数的一个变元出现时,则会暂停COMMAND函数的进程,等待用户直接输入或拖曳输入.这类似于在菜单中具有暂停功能的反斜杠.若在暂停COMMAND函数时使用一条透明命令,COMMAND函数继续暂停.这样,当暂停COMMAND时用户可随心所欲地Z00M(缩放目标)或PAN(平移图纸).当AutoCAD接收到有效输入且不是透明命令时,则返回COMMAND进程并继续往下执行. 例如 (Command circle 5,5 pause line 5,5 7,5 )先执行circle命令,置圆心为(5,5),然后暂停以便屏幕上拖曳圆的半径.当拾取了所要的点(或键入所要的半径值)后,函数继续执行,画一条从5,5到7,5的直线.AutoLISP的PAUSE不能暂停菜单输入.如果在COMMAND函数暂停时,激活了一个菜单项,那么菜单项中的输入值会满足PAUSE的要求.如果还要暂停菜单项,则必须在菜单项中用一个反斜杠.一旦发现了有效输入,AutoCAD将会继续执行COMMAND函数和菜单项. 注意: 1. PAUSE符号当前是由一个反斜杠组成的字串.用户可直接使用一个反斜杠而不用PAUSE符号;但若用一个菜单项调用COMMAND函数,则反斜杠不会暂停COMMAND函数,而暂停正在读入的菜单项. 同样,暂停机制在AutoLISP的将来版本中可能会有一个不同的触发值. 因此我们建议使用PAUSE符号,而不宜显式使用反斜杠. 2. 当一条命令正在等待输入正文串或属性值时出现了PAUSE,那么只有在系统变量TEXTEVAL不为零时,AutoCAD才为输入暂停.否则,认为PAUSE符号(一个反斜杠)的值等效于正文输入,且不为输入暂停. 3. 当COMMAND函数进程被暂停时,该函数仍处于激活态,所以用户此时不可键入另一个AutoLISP表达式进行求值.35 (cond ( ) .) 这个函数接受任意数目的表作为变元.它计算每一个表的第一项(按提供的表的顺序),直到有一项的返回值不为nil为止.然后它计算测试成功的那个子表中后面的那些表达式,返回子表中最后那个表达式的值.如果子表中只有一个表达式(即没有项);则返回表达式的值.COND是AutoLISP中最基本的条件函数. 例如,下列的函数使用COND完成绝对值的计算: (cond ( (minusp a) (- a) ) ( t a ) )如果a的值为-10,它将会返回10.如上所示,COND可以作为Case类型的函数.它常常用T作为缺省的表达式.下面是另一个简单的例子.在符号S中用户响应的字符串是已知的,该函数测试用户的响应,若用户响应是Y或y,则返回1;若响应是N或n,则返回0;否则返回nil. (cond ( = s Y) 1) ( = s y) 1) ( = s N) 0) ( = s n) 0) (t nil) )36 (Cons ) 这是一个基本的表构造函数.它将一个元素加入的开头,并返回加入之后的表. 例如: (cons a (b c d) returns (a b c d) (cons (a) (b c d) returns (a) b c d) 注意,第一个元素可以是原子或是表. CONS也可在的变元位置上接受一个原子,用以构造前面讲过的点对表,即中间用点隔开的一对元素的结构.当显示这种结构时,AutoLISP在第一个和第二个元素之间打印出一个点.这种结构占的存储空间比普通表小,使用CDR函数可返回第二个原子. 如: (cons a 2) returns (a . 2) (car (cons a 2) returns a (cdr (cons a 2) returns 2 点对表是一种特殊的表,某些只处理常规表的函数不能把它当作变元接受.AUTO LISP函数参考2(10版本)37 (cos ) 这个函数返回的余弦值,这里的以弧度表示. 例如: (cos 0.0) returns 1.0 (cos pi) returns -1.038 (defun .) DEFUN以作为函数名定义一个函数(注意,函数名是自动用引号引起来,不需要显式引起来). 在函数名之后是一个变元表(也可为空表),表中可以任选地跟一个斜杠( / )和函数的一个或多个局部符号名. 在斜杠和第一个局部符号、最后一个变元(如果有的话)之间至少用一个空格隔开.如果没有变元或局部符号,那么在函数名后必须有一对空括号.例如: (defun myfunc (x y) .) (函数有两个变元) (defun myfunc (/ a b) .) (函数有两个局部符号) (defun myfunc (x / temp).) (一个变元和一个局部符号) (defun myfunc ( ).) (没有变元和局部符号) 在变元表和局部符号后面是一个或多个表达式,它们在函数执行时进行计算. DEFUN函数本身返回被定义的函数名称.当这个函数被调用时,将计算它的变元,变元由变元变量约束.局部变量可以用于函数的内部,而不改变它们在外部的同名变量值.函数将返回最后表达式的计算结果.所有前面的表达式只有辅助效果.DEFUN函数本身返回所定义的函数名. 例如: (defun add10 (x)(+ 10 x) ) return add10 (add10 5) return 15 (add10 -7.4) return 2.6和 (defun dots(x y / temp)(setq temp(strcat x .)(strcat temp y) ) returns dots (dots a b) returns a.b (dots from to) returns from.to 不准将内部函数名或内部符号名当作使用,因为这样做会使得内部函数不可调用 函数库和自动装入 函数定义可以存储在文件中,再用AutoLISP的LOAD函数装入,这将在本章后面讲述,如果文件acad.lsp存在,AutoLISP将在每次进入AutoCAD图形编辑时自动把此文件装入;利用这个特性可以建立一个用户函数库,保证每次使用时它们总是存在. 任何.lsp库文件也可包括除DEFUN函数以外的表达式.会由于装入一个文件会引起对这些表达式的求值,因此一旦文件装入,用户在文件中的函数调用自动执行.但是,acad.lsp的装入是在AutoCAD图形编辑程序完全启动之前完成的,所以在acad.lsp文件中(在DEFUN外)不准使用COMMAND函数.为了使用户的acad.lsp文件在装入时能自动执行一命令系列,该文件应包含有特殊函数名S:STARTUP的DEFUN定义).详见后. C: XXX函数-增加AutoCAD增加新的命令,这些命令是用定义的函数完成的.若要能象AutoCAD命令一样使用,这些函数必须要遵守下列规则: 1. 函数名的形式必须为C: XXX,这里所有的字母都是大写的. C: 部分必须总是 出现在名称中;XXX部分可以是你选择的命令名,只要它不和AutoCAD的内部命令 或外部命令的名称重复就可以. 2. 函数的定义必须带空变元表(但允许有局部符号).例如,下面定义的一个函数是用多义线画一个正方形: (defun C:PSQUARE (/ pt1 pt2 pt3 pt4 len)(setq pt1 (getpoint Lower left corner:)(setq len (getdist pt1 Length of one side:)(setq pt2 (polar pt1 0.0 len)(setq pt3 (polar pt2 (/ pi 2.0) len)(setq pt4 (polar pt3 pi len)(command PLINE pt1 pt2 pt3 pt4 c) ) 以这种方法定义的函数只需在出现AutoCAD的Command: 提示符时通过输入函数名的XXX部分就能调用.如XXX不是一个已知的AutoCAD命令,AutoCAD就试图调用AutoLISP函数,并且不带任何参数.对于例子C:PSQUARE函数,对话将如形式: Command: PSQUARE Lower left Corner: (输入一点) Length of one side: (输入一条边的长度) 然后这函数就调用AutoCAD的PLINE命令,并回答它的输入提示,画出所要的正方形. 用这种方法为AutoCAD增加命令是AutoLISP特有的一个高级功能.一旦定义了新的命令,它可以使用AutoLISP提供的所有功能.实际调用新命令时不需要用户用括号将命令名括起来,因此,使用这种由AutoLISP实现的命令和其它AutoCAD的内部命令没有什么两样. S:XXXX函数-自动执行 在编辑期间,某些情况下可以自动调用用户定义的,且以S:开头命名的函数.应把函数名前缀S:看做是保留的.为了避免与无关函数发生冲突,除了这些特殊函数以外,禁止使用前缀. 目前,S:STARTUP是唯一能自动执行的函数.一旦它被定义,在AutoCAD绘图编辑进入产生新图或编辑一旧图时,就自动调用S:STARTUP函数(无变元).因此,在acad.lsp文件中.用户可以加入S:STARTUP的DEFUN定义,以便在开始编辑时先执行所希望的设置操作. 例如,假设用户想用自己的命令形式来替换AutoCAD的标准命令QUIT及END,为此,可以用包括下列内容的acad.lsp文件:(defun C:QUIT() . your definition .)(defun C: END() . your definition .)(defun S: :STARTUP() (command undefine quit) (command undefine end)39 (distance ) 这个函数返回三维点和之间的距离.例如: (distance (1.0 2.5 3.0) (7.7 2.5 3.0) returns 6.7 (distance (1.0 2.0 0.5) (3.0 4.0 0.5) returns 2.82843 如果系统变量TLATLAND不等于零,则DISTANCE要求二维点(忽略所给定的三维点的Z坐标),同时返回投影在当前作图平面上的两点间的二维距离.如FLATLAND为零,而所给定的点中有一个或两个点是二维点,则作用与前同.40 (eq ) 这个函数确定和是否完全一样;就是说,它们是否受同样的目标约束(例如,用SETQ).如果两个表达式完全一样,EQ返回T;否则返回nil.它的典型应用是检测两个表实际上是否相同. 例如,对于下列的赋值: ( setq f1 (a b c) ( setq f2 (a b c) ( setq f3 f2)那么: ( eq f1 f3) returns nil (f1 and f3 are not the same list!) ( eq f3 f2) returns T (f3 and f2 are exactly the same list)参阅下面的EQUAL函数.41 (equal ) 这个函数确定和是否相等;就是说它们的计算结果是否相同.例如对于下列的赋值: (setq f1 (a b c) (setq f2 (a b c) (setq f3 f2)那么: (equal f1 f3) 返回 T (f1和f3的计算值相等) (equal f3 f2) 返回 T (f3和f2是完全相同的表)注意,两个表对EQUAL成立,对EQ不一定成立;两个原子对EQUAL成立,对EQ也一定成立.另外,两个表或原子对于EQ成立,对于EQUAL也一定成立的.在比较两实数(或是由实数组成的两个表,如同表示点的表)时,很重要的一点是应明确:用不同的方法计算两个相同的数,其结果可能有些微差别.任选项数字变元,用来使用户指定及间最大差值,在此差值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论