乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 60|回复: 5

[编程交流] 在逗号外调用函数

[复制链接]

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 16:20:06 | 显示全部楼层 |阅读模式
你好
 
我试图创建一段代码,其中包含一个messagebox,用于询问一个问题(是/否),该问题反过来应该设置一个可以在“main”命令中使用的值。
 
  1. (Defun FUNCTION (reply)
  2. (SETQ reply (ACET-UI-MESSAGE        "Content of questionbox" "Title of questionbox"
  3.                                 (+ Acet:YESNO Acet:ICONQuestion)
  4.                 )
  5. )
  6. )

 
就我的“功能”知识而言,这通常是在命令中定义的。即。:
 
  1. (Defun c:command ()
  2. (defun FUNCTION ( / a)
  3.   (do something)
  4. )
  5. (FUNCTION (and do something with that function))
  6. )

 
但我有点想在以类似方式工作的多个命令中使用该函数,但不想在每个命令中添加代码行。
 
那么,我如何做以下工作?
 
  1. (Defun FUNCTION (reply)
  2. (SETQ reply (ACET-UI-MESSAGE        "Content of questionbox" "Title of questionbox"
  3.                                 (+ Acet:YESNO Acet:ICONQuestion)
  4.                 )
  5. )
  6. )
  7. (Defun c:CallFunction1 ()
  8. FUNCTION
  9. )
  10. (Defun c:CallFunction2 ()
  11. FUNCTION
  12. )
  13. (Defun c:CallFunction3 ()
  14. FUNCTION
  15. )
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 16:42:30 | 显示全部楼层
应该看起来像这样。
这三个命令现在都打开了“是/否”对话框。。。
因此,在这种情况下,这三个命令没有变量。
 
  1. (defun FUNCTION ( / )
  2. (setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
  3. ;; Yes = 6, No = 7
  4. (if (= reply 6)
  5.         (progn
  6.                 (ALERT "Yep")
  7.         )
  8.         (progn
  9.                 (ALERT "Nope")
  10.         )
  11. )
  12. )
  13. (defun C:CallFunction1 ( / )
  14. (FUNCTION)
  15. (princ)
  16. )
  17. (defun C:CallFunction2 ( / )
  18. (FUNCTION)
  19. (princ)
  20. )
  21. (defun C:CallFunction3 ( / )
  22. (FUNCTION)
  23. (princ)
  24. )
  25. (princ)

 
要对每个命令执行不同的操作,可以如下所示:
  1. (defun TESTCOMMAND ( number / )
  2. (setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
  3. ;; Yes = 6, No = 7
  4. (if (= reply 6)
  5.         (progn
  6.                 (cond
  7.                         ((= number 1)
  8.                                 (princ "Voorwaarden voor CallFunction1")
  9.                         )
  10.                         ((= number 2)
  11.                                 (princ "Voorwaarden voor CallFunction2")
  12.                         )
  13.                         ((= number 3)
  14.                                 (princ "Voorwaarden voor CallFunction3")
  15.                         )
  16.                 )
  17.         )
  18.         (progn
  19.                 (princ "NO, annuleren.")
  20.         )
  21. )
  22. )
  23. (defun C:CallFunction1 ( / )
  24. (TESTCOMMAND 1)
  25. (princ)
  26. )
  27. (defun C:CallFunction2 ( / )
  28. (TESTCOMMAND 2)
  29. (princ)
  30. )
  31. (defun C:CallFunction3 ( / )
  32. (TESTCOMMAND 3)
  33. (princ)
  34. )
  35. (princ)

 
(测试和工作)
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 16:54:22 | 显示全部楼层
在这两种情况下都会出现错误,我找不到修复它们的方法。似乎在命令部分出错了
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 17:03:14 | 显示全部楼层
这是我测试过的代码,效果很好。
 
  1. (defun TESTCOMMAND ( number / )
  2. (setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
  3. ;; Yes = 6, No = 7
  4. (if (= reply 6)
  5.         (progn
  6.                 (cond
  7.                         ((= number 1)
  8.                                 (princ "Voorwaarden voor CallFunction1")
  9.                         )
  10.                         ((= number 2)
  11.                                 (princ "Voorwaarden voor CallFunction2")
  12.                         )
  13.                         ((= number 3)
  14.                                 (princ "Voorwaarden voor CallFunction3")
  15.                         )
  16.                 )
  17.         )
  18.         (progn
  19.                 (princ "NO, annuleren.")
  20.         )
  21. )
  22. )
  23. (defun C:CallFunction1 ( / )
  24. (TESTCOMMAND 1)
  25. (princ)
  26. )
  27. (defun C:CallFunction2 ( / )
  28. (TESTCOMMAND 2)
  29. (princ)
  30. )
  31. (defun C:CallFunction3 ( / )
  32. (TESTCOMMAND 3)
  33. (princ)
  34. )
  35. (princ)
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:09:39 | 显示全部楼层
在我看来,您应该努力实现具有以下签名的“YesNo”功能:
(YesNoDialog“Title”“message”)=>T/nil(返回值T或nil)
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 17:20:52 | 显示全部楼层
现在似乎很好,真的。。。可能文字功能是问题所在。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 18:27 , Processed in 1.600040 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表