能否自定义具有可选参数的函数
<FONT face=宋体><FONT size=2>如题,比如象(getangle )一类格式。自定义的函数中(defun ddd (ss dd /) 在引用时需要提供所有参数。</FONT></FONT><FONT face=宋体><FONT size=2></FONT></FONT> ; ----------------------- UANGLE --------------------------<BR>; input angle<BR>(defun uangle (bit kwd msg def bpt / inp)<BR> (if def<BR> (setq msg (strcat "\n" msg "<" (angtos def) ">: ")<BR> bit (* (fix (/ bit 2)))<BR> )<BR> (setq msg (strcat "\n" msg ": "))<BR> ) ; if def<BR> (initget bit kwd)<BR> (setq inp<BR> (if bpt<BR> (getangle msg bpt)<BR> (getangle msg)<BR> )<BR> )<BR> (if inp inp def)<BR>)
;;;用法
(setq ang (uangle 1 "" "角度" ang nil)) <A name=39412><FONT color=#990000><B>xyp1964</B></FONT></A>版主没有理解我的意思,我是说定义的函数调用时具有可选参数,如你上面的调用(setq ang (uangle 1 "" "角度" ang nil))变为(setq ang (uangle 1 "" "角度" ))也能成功调用,即def bpt 两参数是可选择的,有没有办法。 ——以下摘自帮助文件
用 AutoLISP 可以定义接受参数的函数。与许多标准的 AutoLISP 函数不同,用户定义的函数不能拥有可选参数。在调用接受参数的用户定义函数时,必须给所有的参数提供值。 <BR> 谢谢 变通的办法就是用表了
(defun aaa (lst / )
....)
(aaa '(ang ))
(aaa '(ang nil)) 学习一下 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=181052&extra=&highlight=%BF%C9%D1%A1%B2%CE%CA%FD&page=7
这个. 实测好用
页:
[1]