找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5290|回复: 36

[他山之石] mapcar和set联用,下面代码出错了,改成while就好了

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2017-6-1 15:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 /db_自贡黄明儒_ 于 2017-6-1 16:48 编辑

http://bbs.xdcad.net/thread-671714-1-1.html在2016下,下面的程序不能用了,以前能用的。
出现错误提示:
命令: 'VLIDE VVC: Internal Error
(defun optimizeCode (ss vartxtlst filterlst)
    (mapcar (function (lambda (x y) (set (read x) (wmg-ssgetp ss y))))
            vartxtlst
            filterlst
    )
  )

我现在换成foreach while就正常了
(defun optimizeCode (ss vartxtlst filterlst)
  (while (setq x (car vartxtlst))
    (setq y (car filterlst))
    (set (read x) (wmg-ssgetp ss y))
    (setq vartxtlst (cdr vartxtlst))
    (setq filterlst (cdr filterlst))
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-6-1 15:43:52 | 显示全部楼层
确定是MAPCAR的事?

点评

的确  发表于 2017-6-1 15:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 15:52:13 | 显示全部楼层

当然,也可能是set惹的祸。反正原来那段代码不行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-6-1 16:15:19 | 显示全部楼层

现在身边没16的,
(mapcar '(lambda(x y) (+ x y)) '(1 2 3 4) '(5 4 3 2))

你试试上面的代码,正常返回值不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 16:33:17 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2017-6-1 16:34 编辑

2018都出来了,你落伍了,呵呵。

2016下
(mapcar '(lambda(x y) (+ x y)) '(1 2 3 4) '(5 4 3 2)) =》(6 6 6 6)没有问题


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2017-6-1 16:40:52 | 显示全部楼层

那老黄你就得修改下 标题了,不是MAPCAR的事,别让他背锅了。

你单行执行下 set 你的数据,看看 set是不是有问题了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 16:45:36 | 显示全部楼层

老大,测试过了,set也没有问题。就是那段代码中有mapcar 和set ,就不行了。

点评

弄个低版本的vllib.dll覆盖2016版本的,看看;记得2016版的备份啊  发表于 2017-6-1 17:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2017-6-1 17:08:14 | 显示全部楼层


vartxtlst filterlst 内容分别是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 19:02:37 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2017-6-1 19:04 编辑


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2017-6-1 19:42:59 | 显示全部楼层
是个新鲜事,我只记得 read 可能会出现问题,其他应该不会
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-6-1 20:07:19 | 显示全部楼层
2012上看不出错误,如果是在2016上出错,或许是64位系统下函数有调整,也或许只是Vlide编辑器有什么不完善的地方。
不过从第一感觉就是这里的read函数是多余的,虽然我们知道read有解析函数名的作用,但对于以表处理见长的Lisp而言,这样用似乎有点画蛇添足,根据filterlst构建一个不同类型是实体名集表足以,因为顺序是自己定的,以后按顺序取值即可,这样至少可以避开最容易出问题的read函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 20:43:52 | 显示全部楼层

64位下我是编译成vlx运行出错的,后来我又在 32位下用vlisp下运行,同样出错。应该与编辑器没有关系了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-6-1 20:55:55 | 显示全部楼层
一般说来,VLIDE就是acad自带的编辑器本身,出错提示应该是VLIDE内部错误的意思吧,很有可能是什么函数的新旧算法与VLIDE不兼容。建议你在可能出错的地方加一个断点调试一下,或许能找出问题所在。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-6-1 20:58:05 | 显示全部楼层

他应该是在命令行就报错了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-1 21:06:14 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2017-6-1 21:07 编辑

64位下,运行vlx.

QQ截图20170601210104.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 07:19 , Processed in 0.377038 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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