•   (if (= tc 1)
  •   `(tcc_tc)
  •   )
  • 原来期望 tc等于1时才执行(tcc_tc) 知己上我不知道怎么加了个' 执行起来发现逻辑反了。当tc不等于1的时候执行了(tcc_tc)  反而当tc等于1的时候却不执行(tcc_tc)
  • 当添加了测试语句反而正常了
    •   (if (= tc 1)
    •     (progn
    •             
    •             `(tcc_tc)  ; 这里有引号
    •              (princ "\n条件为真,进入if分支")
    •     )
    •     (princ "\n条件为假,跳过if分支")
    •   )

  • 这是怎么回事啊什么原因  
  • 求大佬帮忙解惑 我刚开始学习



网友答: (if (= tc 1)
   `
   (tcc_tc)
)   估计是 ` 被当作一个语句了  其执行结果是nil

网友答:
  1. ;; 假设这是你的函数定义
  2. (defun tcc_tc ()
  3.     (princ "\ntcc_tc 函数被执行了!")
  4.     "tcc_tc返回值"
  5. )

  6. ;; 测试变量
  7. (setq tc 1)

  8. ;; ❌ 错误写法 - 有反引号
  9. (princ "\n测试1 (错误):")
  10. (if (= tc 1)
  11.     `(tcc_tc)  ; 只返回列表,不执行
  12. )

  13. ;; ✅ 正确写法 - 无反引号
  14. (princ "\n\n测试2 (正确):")
  15. (if (= tc 1)
  16.     (tcc_tc)  ; 真正执行函数
  17. )

  18. ;; ✅ 带调试信息的完整版本
  19. (princ "\n\n测试3 (完整版):")
  20. (if (= tc 1)
  21.     (progn
  22.         (princ "\n条件为真 (tc = 1)")
  23.         (tcc_tc)
  24.         (princ "\n执行完成")
  25.     )
  26.     (progn
  27.         (princ "\n条件为假 (tc ≠ 1)")
  28.         (princ "\n跳过执行")
  29.     )
  30. )
  • 上一篇:★幕墙通用工具箱1.6-源码 2025.08.08更新
  • 下一篇:没有了