明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1696|回复: 12

[提问] mapcar和lambda联合使用,出问题怎么解决

[复制链接]
发表于 2018-9-12 01:31:05 | 显示全部楼层 |阅读模式

代码如上图所示,运行的时候,总是提示错误,如下图所示:

请问该怎么解决?
现在刚刚入门visual lisp,好多东西都不懂,只能一点一点地学习,请大家不吝赐教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2018-9-12 09:21:20 | 显示全部楼层
Andyhon 发表于 2018-9-12 08:42
是这个吗? 不甚相同
Command: (mapcar 'cons tag lst)
(("layout" . "layout1") ("name" . "桥型布置图") ...

我大致上理解两个mapcar嵌套的作用了,内层的mapcar,是为了定义一个函数,这个函数对两个列表进行cons函数处理,生成dotted pair(具体不知道是啥东西,看官方帮助上这样讲)。
外层的mapcar,则是将函数中的自定义变量x替换为实际的列表lst。
 楼主| 发表于 2018-9-12 08:31:43 来自手机 | 显示全部楼层
yshf 发表于 2018-9-12 08:28
“返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子”
如果 ...

哦,就是说出错是在前两行么?那应该怎么修改呢?
我主要还是想读懂leemac的代码,其实程序里的是第三行,前两行是我自己写的,为了给列表赋值
发表于 2018-9-12 08:42:11 | 显示全部楼层
是这个吗? 不甚相同
Command: (mapcar 'cons tag lst)
(("layout" . "layout1") ("name" . "桥型布置图") ("number" . "1") ("sum" . "8"))
发表于 2018-9-12 08:09:12 | 显示全部楼层
既是错误,建议您说说什么才是想要的输出!?
如此才能有个调整订正的方向
 楼主| 发表于 2018-9-12 08:12:25 来自手机 | 显示全部楼层
这个是leemac程序中的某一句,我把他摘出来独立运行,想看看效果。这句应该是把两个列表中的元素两两组合,行成一个新的列表
 楼主| 发表于 2018-9-12 08:12:45 来自手机 | 显示全部楼层
我在调试的时候看过效果
 楼主| 发表于 2018-9-12 08:13:13 来自手机 | 显示全部楼层
就是不知道为什么,单独拿出来的时候就不能运行了
 楼主| 发表于 2018-9-12 08:15:30 来自手机 | 显示全部楼层
返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子
 楼主| 发表于 2018-9-12 08:21:24 来自手机 | 显示全部楼层
Andyhon 发表于 2018-9-12 08:09
既是错误,建议您说说什么才是想要的输出!?
如此才能有个调整订正的方向

您好,能帮忙看一下么,多谢
发表于 2018-9-12 08:28:08 | 显示全部楼层
“返回的结果应该是(“layout.layout1” “name.桥型布置图” “number.1” “sum.8”)这个样子”
如果是这样,改为如下更易理解:
(setq lst1 (mapcar '(lambda(a b)(cons a b)) tag lst))
另外list为保留字,不要用作变量。
 楼主| 发表于 2018-9-12 08:33:23 来自手机 | 显示全部楼层
其实感觉这个mapcar函数有点像Excel中的数组公式,都是对一个区域进行运算
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 09:01 , Processed in 0.172369 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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