明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1185|回复: 10

[讨论] 求助,如何批量定义函数

[复制链接]
发表于 2023-2-15 00:13 | 显示全部楼层 |阅读模式
  1. (DEFUN L1 ()
  2.   (SETQ KEY 2)
  3.   (PRINC KEY)
  4. )
  5. (DEFUN L2 ()
  6.   (SETQ KEY 2)
  7.   (PRINC KEY)
  8. )
  9. (DEFUN L3 ()
  10.   (SETQ KEY 3)
  11.   (PRINC KEY)
  12. )
  13. (DEFUN L4 ()
  14.   (SETQ KEY 4)
  15.   (PRINC KEY)
  16. )
  17. (DEFUN L5 ()
  18.   (SETQ KEY 5)
  19.   (PRINC KEY)
  20. )
  21. (DEFUN L6 ()
  22.   (SETQ KEY 6)
  23.   (PRINC KEY)
  24. )

复制代码
如何用循环  把上诉的函数一次性定义?我试了半天,没啥思路。


有没有大神给点方案,还是不能实现?
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2023-2-15 00:30 | 显示全部楼层
本帖最后由 liuhe 于 2023-2-18 12:46 编辑
  1. (defun LL( / J I) ;;;;;定义函数
  2. (setq i 6 j 1)
  3. (repeat        i
  4.   (eval        (read (strcat "(defun-q"
  5.                       " "
  6.                       "l"
  7.                       (rtos j 2 0)
  8.                       "(key)(SETQ KEY"
  9.                       " "(rtos j 2 0)
  10.                       ")(PRINC KEY))"
  11.               )
  12.         )
  13.   )
  14.   (setq j (1+ j))
  15. ))




已经自行解决



2023.02.18

删除命令,尤其是自定义快捷键更新

(defun DELUSUBR        (/ J I);;;;;删除定义函数
  (setq        i 6
        j 1
  )
  (repeat i
    (IF        (= 'LIST (TYPE (eval (read (strcat "l" (rtos j 2 0))))))
      (SET (read (strcat "l" (rtos j 2 0))) NIL)
    )

    (setq j (1+ j))
  )
)



发表于 2023-2-15 08:33 | 显示全部楼层
(defun nopadef (exps values)
  (mapcar '(lambda (def_x def_y) (set def_x def_y)) exps values)
)

(nopadef '(lst e l) '( (1 2 3) 2 3))
 楼主| 发表于 2023-2-15 08:50 | 显示全部楼层
菜卷鱼 发表于 2023-2-15 08:33
(defun nopadef (exps values)
  (mapcar '(lambda (def_x def_y) (set def_x def_y)) exps values)
)

6666666666666
 楼主| 发表于 2023-2-15 08:55 | 显示全部楼层
菜卷鱼 发表于 2023-2-15 08:33
(defun nopadef (exps values)
  (mapcar '(lambda (def_x def_y) (set def_x def_y)) exps values)
)

你这个我没看懂啊,能不能举个例子, 我没看到我定义了那些函数
发表于 2023-2-15 11:43 | 显示全部楼层
(foreach n '(1 2 3 4 5 6)
        (eval (list 'defun (read(strcat"L"(itoa n))) nil (list 'setq 'key n)'(princ key) ))
)
 楼主| 发表于 2023-2-15 12:19 | 显示全部楼层
tryhi 发表于 2023-2-15 11:43
(foreach n '(1 2 3 4 5 6)
        (eval (list 'defun (read(strcat"L"(itoa n))) nil (list 'setq 'key n)'(pr ...

理解 深刻 6666
发表于 2023-2-15 12:19 | 显示全部楼层
(mapcar '(lambda (x) (eval(read(strcat "(defun c:l"(itoa x)"(/)(setq key "(itoa x)")(princ key)(princ))")))) '(1 2 3 4 5 6))
发表于 2023-2-15 13:14 | 显示全部楼层
感谢大佬,学习了
发表于 2023-2-15 14:42 | 显示全部楼层
本帖最后由 菜卷鱼 于 2023-2-15 14:49 编辑
liuhe 发表于 2023-2-15 08:55
你这个我没看懂啊,能不能举个例子, 我没看到我定义了那些函数

(nopadef '(lst e l) '( (1 2 3) 2 3))
(nopadef [函数:字符串列表] [各函数对应的值列表])
偷懒用了单引号,单引号代表 quote
相当于 (nopadef (list (read "lst") (read "e") (read "l")) (list (list 1 2 3) 2 3))
定义的函数   lst  e  l
函数的值分别是   (1 2 3) 2 3
lst ==>  (list 1 2 3)
e ==> 2
l ==> 3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 23:19 , Processed in 0.247652 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表