mapcar和lambda联合使用,出问题怎么解决
代码如上图所示,运行的时候,总是提示错误,如下图所示:
请问该怎么解决?
现在刚刚入门visual lisp,好多东西都不懂,只能一点一点地学习,请大家不吝赐教。
Andyhon 发表于 2018-9-12 08:42
是这个吗? 不甚相同
Command: (mapcar 'cons tag lst)
(("layout" . "layout1") ("name" . "桥型布置图") ...
我大致上理解两个mapcar嵌套的作用了,内层的mapcar,是为了定义一个函数,这个函数对两个列表进行cons函数处理,生成dotted pair(具体不知道是啥东西,看官方帮助上这样讲)。
外层的mapcar,则是将函数中的自定义变量x替换为实际的列表lst。 yshf 发表于 2018-9-12 08:28
“返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子”
如果 ...
哦,就是说出错是在前两行么?那应该怎么修改呢?
我主要还是想读懂leemac的代码,其实程序里的是第三行,前两行是我自己写的,为了给列表赋值 是这个吗? 不甚相同
Command: (mapcar 'cons tag lst)
(("layout" . "layout1") ("name" . "桥型布置图") ("number" . "1") ("sum" . "8")) 既是错误,建议您说说什么才是想要的输出!?
如此才能有个调整订正的方向 这个是leemac程序中的某一句,我把他摘出来独立运行,想看看效果。这句应该是把两个列表中的元素两两组合,行成一个新的列表 我在调试的时候看过效果 就是不知道为什么,单独拿出来的时候就不能运行了 返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子 Andyhon 发表于 2018-9-12 08:09
既是错误,建议您说说什么才是想要的输出!?
如此才能有个调整订正的方向
您好,能帮忙看一下么,多谢 “返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子”
如果是这样,改为如下更易理解:
(setq lst1 (mapcar '(lambda(a b)(cons a b)) tag lst))
另外list为保留字,不要用作变量。 其实感觉这个mapcar函数有点像Excel中的数组公式,都是对一个区域进行运算
页:
[1]
2