能否得到像系统自带的*或/或or之类的函数形式
玩了这一段时间了发现有的系统函数可以选择输入变量或不输入或多输入
例如(inters p1 p2 p3 p4 mode) 最后一个mode可以输入也可以省略。
或例如 (* i1 i2 i3 ....in) 可输入一个到多个不受限制。
我们用lisp编写的函数就没法做到这样,还是其实可以?
有没有同志有思路,或否定掉这个思路,或已经可以做到了。
直接做不行,可以变通,就是后面参数用表,由表来变长。
建议看看我的“认识自定义函数”,或许能有帮助。 最近想到一个办法,是不是可以通过判断参数来重新定义函数实现,比如:
(defun LM:acdoc nil
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
(LM:acdoc)
) 本帖最后由 我的我啊 于 2014-9-26 13:44 编辑
自贡黄明儒 发表于 2014-9-26 12:44 http://bbs.mjtd.com/static/image/common/back.gif
最近想到一个办法,是不是可以通过判断参数来重新定义函数实现,比如:
(defun LM:acdoc nil
(eval (l ...
这个方法我也用过,但是还是做不到多个参数的生成
e.g.
(defun Constant (/ lst)
(setq lst '(2 3 4 5 6))
(mapcar '(lambda (x y)
(eval (list 'defun x (list '/) (list '/ 'pi y)))
)
(mapcar 'read
(mapcar '(lambda (x)
(strcat "pi/"
(rtos
x
)
)
)
lst
)
)
lst
)
(mapcar '(lambda (x y)
(eval (list 'defun x (list 'a) (list '/ 'a (list '* '1.0 y))))
)
(mapcar 'read
(mapcar '(lambda (x) (strcat "/" (rtos x)))
lst
)
)
lst
)
)
ll_j 发表于 2014-9-26 12:21 static/image/common/back.gif
直接做不行,可以变通,就是后面参数用表,由表来变长。
建议看看我的“认识自定义函数”,或许能有帮助。
这个方法稍微和我说的有所出入,这个始终也就一个变量 不可以,Lisp 从出生就不可以
页:
[1]