Lisp中能否将字符串作为变量名来执行
比如说变量a=1,变量b="a"。也就是字符串b存储的是变量a的名称。我想能不能通过b来获得1(a的值)。很多脚本编程的语言都可以的。
实现这个功能的目的主要是用来从ini文件里面提取和保存参数的。
我想把变量名做成一个名列表(list "变量名1" "变量名2" "变量名3"……),
从ini中读取出的字符串也转换成值列表,然后赋值就方便了,不需要每一个变量去单独一个语句赋值。
用read+set即可 可以但不值得,熟悉Lsp以后会发现,用表更灵活。
建议下载我的签名中的《认识自定义变量》看看,或许会有帮助。 陨落 发表于 2016-1-14 16:40 static/image/common/back.gif
用read+set即可
多谢提示,解决了。主要是要加上read,然后用set或者用eval也可以 ll_j 发表于 2016-1-14 16:44 static/image/common/back.gif
可以但不值得,熟悉Lsp以后会发现,用表更灵活。
建议下载我的签名中的《认识自定义变量》看看,或许会有帮 ...
我就是想用列表来实现赋值,否则就需要用很多行(setq 变量1 值1)来赋值了。现在可以直接在repeat中用:
(set (read (nth n varlist)) (nth n valuelist))来解决这个问题。
多谢回复~ (mapcar 'set '(a b c) '(1 2 3)) xyp1964 发表于 2016-1-14 21:37 static/image/common/back.gif
(mapcar 'set '(a b c) '(1 2 3))
多谢提醒,这样可以不用repeat了。不过set必须要配合read才行。
这样写就好了:(mapcar '(lambda (x y) (set (read x) y)) '(a b c) '(1 2 3))
页:
[1]