SWAYWOOD 发表于 2004-5-11 22:18:00

求助,关于变量赋值的问题

已知


表1                       ("a" "b" "c" "d" "e")


表2                       (1        2        3        4 5)


有没有一个函数可以将表2中的值一一对应地赋值给a b c d e?


多谢!

alin 发表于 2004-5-11 22:50:00

做一个


(defun assign (lst1 lst2)<BR>       (foreach atm lst1<BR>                       (set (read atm) (car lst2))<BR>                       (setq lst2 (cdr lst2))<BR>       )<BR>)

meflying 发表于 2004-5-11 22:52:00

<A href="dispbbs.asp?boardID=3&amp;ID=20236&amp;page=1" target="_blank" >dispbbs.asp?boardID=3&amp;ID=20236&amp;page=1</A>



(mapcar 'set (mapcar 'read list1) list2)


通过以上两个例子,你是否应该好好琢磨一下mapcar的用法

SWAYWOOD 发表于 2004-5-12 21:49:00

(setq var-list1 (list "kn" "h" "l1" "b1" "t1" "s1" "l2" "b2" "t2" "l3" "b3" "t3" "e" "d" "m" ))<BR>(setq var-list (mapcar '(lambda (x) (strcat "sl-" x))<BR>                                                               var-list1<BR>                                                       )<BR>)


(mapcar 'action_tile var-list "(set (mapcar 'read var-list1) (read $value))")


var-list 是dcl控键的key值的list,如果要每个都写action_tile语句的话那将很麻烦,可我像上面那样写又不行,飞哥帮忙看看!

meflying 发表于 2004-5-12 22:11:00

看看第一个mapcar函数的第三个参数,"(set (mapcar 'read var-list1) (read $value))",mapcar后面的参数都应该是表,你为什么给一个字符串?


还有set函数,后面的mapcar返回的必定是表,set后面能跟表参数吗?你这个写法错误太多,还没有熟练运用mapcar函数,不过你的这个想法很好,我试试先

SWAYWOOD 发表于 2004-5-12 22:17:00

飞哥,如果可行的话,这种做法就很值得关注,不然就很麻烦

meflying 发表于 2004-5-12 22:24:00

(mapcar 'action_tile var-list1       (mapcar '(lambda(e) (strcat "(setq " e " (read $value))")) var-list))

SWAYWOOD 发表于 2004-5-12 22:30:00

我也想过用lambda,但转来转去转胡涂了,谢谢飞哥啊……

SWAYWOOD 发表于 2004-5-13 18:35:00

飞哥,我试过了,程序启动时,改行运行,但再要是修改编辑框的话,它并没有执行ACTION_TILE语句,不知怎么回事,请赐教……

meflying 发表于 2004-5-13 18:48:00

程序内容呢?


我自己写的测试程序是可以的
页: [1] 2 3
查看完整版本: 求助,关于变量赋值的问题