cqnj023 发表于 2004-8-1 02:23:00

能否自定义具有可选参数的函数

<FONT face=宋体><FONT size=2>如题,比如象(getangle )一类格式。自定义的函数中(defun ddd (ss dd /) 在引用时需要提供所有参数。</FONT></FONT>


<FONT face=宋体><FONT size=2></FONT></FONT>

xyp1964 发表于 2004-8-1 07:14:00

; ----------------------- UANGLE --------------------------<BR>;                                                                                                                                                                               input angle<BR>(defun uangle (bit kwd msg def bpt / inp)<BR>       (if def<BR>                                       (setq msg (strcat "\n" msg "&lt;" (angtos def) "&gt;: ")<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))

cqnj023 发表于 2004-8-1 09:31:00

<A name=39412><FONT color=#990000><B>xyp1964</B></FONT></A>版主没有理解我的意思,我是说定义的函数调用时具有可选参数,如你上面的调用(setq ang (uangle 1 "" "角度" ang nil))变为(setq ang (uangle 1 "" "角度" ))也能成功调用,即def               bpt 两参数是可选择的,有没有办法。

meflying 发表于 2004-8-1 09:40:00

——以下摘自帮助文件


用 AutoLISP 可以定义接受参数的函数。与许多标准的 AutoLISP 函数不同,用户定义的函数不能拥有可选参数。在调用接受参数的用户定义函数时,必须给所有的参数提供值。 <BR>

cqnj023 发表于 2004-8-1 10:10:00

谢谢

无痕 发表于 2004-8-1 10:22:00

变通的办法就是用表了


(defun aaa (lst / )


....)


(aaa '(ang ))


(aaa '(ang nil))

guankuiwu 发表于 2021-1-7 18:22:16

学习一下

nuan1989 发表于 2025-1-15 01:14:42

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=181052&extra=&highlight=%BF%C9%D1%A1%B2%CE%CA%FD&page=7

这个. 实测好用
页: [1]
查看完整版本: 能否自定义具有可选参数的函数