乐筑天下

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

输出函数问题

[复制链接]

9

主题

82

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-22 10:20:00 | 显示全部楼层 |阅读模式
我想写一个可以直接运行或者将运行代码输出成文件的代码,本地运行正常,谁知输出文件时出状况,理想目的时文件输出内容为"(abc  5 )",我一口老血喷出,如果真要实现只要预设一下就可以,但是对于#[U] 有没有好一点的方法。
源码如下:
  1. (defun abc (a< nn)
  2.   (if (a< 3 nn)
  3.     (alert "oK")
  4.   )
  5. )
  6. (defun test (tn / fi file ls01 path_name)
  7.   (setq ls01 (list abc < 5))
  8.   (if tn
  9.     (eval ls01)        ;本地运行模式
  10.     (progn        ;输出运行文件
  11.       (setq path_name "c:\\1.txt")
  12.       (if (open path_name "r")
  13.   (princ "该文件已经存在")
  14.   (progn (setq file (open path_name "w"))
  15.          (close file)
  16.   ) ;_ 结束progn
  17.       )
  18.       (if (findfile path_name)
  19.   (progn
  20.     (setq fi (open path_name "w"))
  21.     (princ "(" fi)
  22.     (foreach ii ls01
  23.       (princ ii fi)
  24.       (princ " " fi)
  25.     )
  26.     (princ ")" fi)
  27.     (close fi)
  28.   )
  29.   (princ)
  30.       )
  31.     )
  32.   )
  33. )
  34. (defun c:tt ()
  35.   (test nil)
  36. )
回复

使用道具 举报

39

主题

278

帖子

10

银币

后起之秀

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

铜币
430
发表于 2022-7-22 10:38:00 | 显示全部楼层
vl-princ-to-string
vl-prin1-to-string
回复

使用道具 举报

9

主题

82

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-22 11:13:00 | 显示全部楼层

同样输出为#[U],想输出成 abc
回复

使用道具 举报

9

主题

82

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-22 14:12:00 | 显示全部楼层

vl-princ-to-string用这个剪裁一下文本也能实现
回复

使用道具 举报

122

主题

647

帖子

223

银币

版主

Rank: 10Rank: 10

铜币
1174
发表于 2022-7-22 19:09:00 | 显示全部楼层

判断一下,如果是函数,用vl-symbol-name获取它的名字字符串(vl-symbol-name 'princ)
回复

使用道具 举报

61

主题

718

帖子

13

银币

中流砥柱

Rank: 25

铜币
960
发表于 2022-7-22 20:59:00 | 显示全部楼层

(setq ls01 (list abc < 5))
改成(setq ls01 '(abc < 5))
输出的地方 直接 (princ (VL-PRIN1-TO-STRING ls01) fi)就完事了
  1. (defun abc (a< nn)
  2. (if (a< 3 nn)
  3.   (alert "oK")
  4. )
  5. )
  6. (defun test (tn / fi file ls01 path_name)
  7. (setq ls01 '(abc < 5))
  8. (if tn(eval ls01)  ;±¾μØÔËDDÄ£ê½
  9.   (progn  ;êä3öÔËDDÎļt
  10.   (setq file (open "c:\\1.txt" "w"))
  11.   (princ(VL-PRIN1-TO-STRING ls01)file)
  12.   (close file)))
  13. )
  14. (defun c:tt(/ file ls01)
  15. (test nil)
  16.   (setq file(open "c:\\1.txt" "r"))
  17.   (setq ls01(read(read-line file)))
  18.   (close file)
  19.   (eval ls01)
  20. )

回复

使用道具 举报

9

主题

82

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-23 13:44:00 | 显示全部楼层

感谢,对 ' 的认知双多了
回复

使用道具 举报

9

主题

82

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-23 13:55:00 | 显示全部楼层

这么偏门又不实用的技能你也会666,用 ' 坏处就是函数变固定了不能自定义
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 01:43 , Processed in 0.538128 second(s), 68 queries .

© 2020-2025 乐筑天下

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