明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1580|回复: 6

[求助]又遇到了一个难题(直接加载字符串或列表)

[复制链接]
发表于 2005-7-12 14:37:00 | 显示全部楼层 |阅读模式

请问如下功能我要如何实现:有一字符串内容为

“(setq a 3.0)
   (setq i 1)
   (repeat 10
        (setq a (+ (* a i) a))
        (setq i (1+ i))
    )”(列表也可)

要怎样才能把字符串内的内容转换为程序代码并执行呢?

发表于 2005-7-12 15:08:00 | 显示全部楼层
;如字符串是如下程序中的列表样式,请试用以下程序
(defun c:cc()
   (mapcar  '(lambda(x) (eval (read x)))
            '( "(setq a 3.0)"
        "(setq i 1)"
        "(repeat 10 (setq a (+ (* a i) a)) (setq i (1+ i)))"
      )
   )
)
发表于 2005-7-13 13:27:00 | 显示全部楼层

(DEFUN DOLIST (YLST)

(EVAL (READ (STRCAT "(PROGN " YLST ")")))

)

 楼主| 发表于 2005-7-13 19:31:00 | 显示全部楼层
厉害!
发表于 2005-7-15 11:58:00 | 显示全部楼层

(setq str "(setq a 3.0)(setq i 1)(repeat 10(setq a (+ (* a i) a))(setq i (1+ i)))")

(eval(read(strcat "(progn" str ")"))) ;->11

 

发表于 2005-7-15 13:53:00 | 显示全部楼层
无痕发表于2005-7-15 11:58:00 (setq str \"(setq a 3.0)(setq i 1)(repeat 10(setq a (+ (* a i) a))(setq i (1+ i)))\") (eval(read(strcat \"(progn\" str \")\"))) ;->11<...

这个结果没有问题啊
发表于 2005-7-15 16:10:00 | 显示全部楼层

评分

参与人数 1金钱 -5 贡献 -1 激情 -2 收起 理由
meflying -5 -1 -2 【差评】灌水

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-17 18:29 , Processed in 0.181371 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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