明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 889|回复: 4

[已解决][求助]一个不知道可不可能实现的功能

[复制链接]
发表于 2008-4-24 19:53 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-4-24 21:31:00 编辑

(setq lst (list "xyz" "ab" "cd" ""ef" ""gh"))

有这么一个表,我想实现以下功能,不知道可不可能。将表中的第一个元素作为基本元素,其后的每个元素加上jk成为一个变量,其值为"xyz-1"等,1这个数字即们该元素在表中的位置-1,如下

abjk-->"xyz-1"
cdjk-->"xyz-2"
efjk-->"xyz-3"
ghjk-->"xyz-4"

说简单点就是把表中的每个元素作为一个变量,不知道我说清楚没有?

发表于 2008-4-24 20:03 | 显示全部楼层

这个可以用LISP实现。

(setq lst (list "xyz" "ab" "cd" ""ef" ""gh"))
(setq i -1 lst1 (list))
(repeat (length lst)
 (setq lst1 (cons (read (strcat (nth (setq i (1+ i)) lst) "-" (itoa (1+ i)))) lst1))
)
(setq lst1 (reverse lst1))

表lst1中就是变量名的表。

 楼主| 发表于 2008-4-24 20:08 | 显示全部楼层

可能是我没有说清楚引起版主的误解。

我要的变量名是表中的元素+特定字符。

变量的值是该变量在原表中的位置。

发表于 2008-4-24 20:26 | 显示全部楼层

(setq lst (list "xyz" "ab" "cd" "ef" "gh"))
(setq i -1 lst1 (list))
(repeat (length lst)
 (setq lst1 (cons (read (strcat (nth (setq i (1+ i)) lst) "-" (itoa (1+ i)))) lst1))
)
(setq lst1 (reverse lst1))

程序运行结果如下:

(XYZ-1 AB-2 CD-3 EF-4 GH-5)

再运行:

(setq i -1)
(repeat (length lst1)
 (set (nth (setq i (1+ i)) lst1) (1+ i))
)

就可以将表中的位置置入变量中。

 楼主| 发表于 2008-4-24 21:28 | 显示全部楼层
  1. (setq lst (list "xyz" "ab" "cd" "ef" "gh"))
  2. (setq xyz (car lst))
  3. (setq lst (cdr lst))
  4. (setq i 0)
  5. (foreach nr lst
  6. (set (read nr) (strcat xyz "-" (itoa (setq i (1+ i)))))
  7. ) ;_ 结束foreach
感谢版主指点,我已经得到我所要的结果了!因以前一直用setq,从来没有用过set,看到版主的提示之后才想起来。
再次感谢版主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 13:13 , Processed in 0.151175 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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