明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1408|回复: 13

[讨论] 怎么嵌套mapcar,怎么解,大佬有更好的方法吗?

[复制链接]
发表于 2025-6-20 20:26:55 | 显示全部楼层 |阅读模式
  1. (mapcar '(lambda(x)
  2. (mapcar '(lambda(y)
  3.   (mapcar '(lambda(z)
  4.     (entxjentss (cadr z))
  5.   )
  6.     y)
  7.            
  8.          )
  9.   
  10.   x         
  11. )
  12.            
  13. )
  14.   ents1)
复制代码
比如我要嵌套5次mapcar 的结果,怎么写呢?有大佬有好的写法吗?赐教下!万分感谢!
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2025-6-21 13:55:50 | 显示全部楼层
yaojing38 发表于 2025-6-21 10:26
大佬,可以示范下写法吗?递归判断是list就继续mapcar吗?

最简单的图块分解递归写法:
  1. (Defun _Explode        (vlo / OBX)
  2.   (and (vlax-method-applicable-p vlo "Explode")
  3.        (setq obx (vl-catch-all-apply 'vla-explode (list vlo)))
  4.        (not (vl-catch-all-error-p obx))
  5.        (progn (vla-erase vlo)
  6.               (mapcar '_Explode
  7.                       (vlax-safearray->list (vlax-variant-value obx))
  8.               )
  9.        )
  10.   )
  11. )
回复 支持 反对

使用道具 举报

发表于 2025-6-21 00:34:58 | 显示全部楼层
List operation. It's super powerful.

x----> ents1  --> (list a b c d)
y----> ents2 ---> (list e f g h)
z----> ents3 ---> (list i j k l)
...
(mapcar '(lambda(x y z)
    (progn (setq yy (+ x y) zz (* y z))
              (setq xx ( / yy zz))
             .....
   ))
   (list a b c d)(list e f g h) (list i j k l))

--->new list ( o p q r)

评分

参与人数 1明经币 +1 收起 理由
guosheyang + 1 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-6-21 09:49:45 | 显示全部楼层
这种单纯嵌套,表层都是没有具体执行其他函数操作的情况,直接将最底层定义成函数用递归比lambda要好。用lambda相当于要提前预知并定义需要多少层,递归可以不用管,而且允许不同的输入递归层数不一样。就像如同彻底分解图块,顶层图块内有多少层嵌套都无所谓。
回复 支持 反对

使用道具 举报

发表于 2025-6-20 20:47:35 | 显示全部楼层
mapcar  与lambda 的组合 就是  循环     与  repeat  while   forehach 等 一样的   一般三重循环 就是较多的了 五重循环  不知道是啥情况
回复 支持 反对

使用道具 举报

发表于 2025-6-20 20:50:57 | 显示全部楼层
不说具体问题等于耍流氓
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-20 21:00:30 | 显示全部楼层
mahuan1279 发表于 2025-6-20 20:50
不说具体问题等于耍流氓

就是跟树枝一样,需要遍历每个分枝
回复 支持 反对

使用道具 举报

发表于 2025-6-20 21:22:09 | 显示全部楼层
yaojing38 发表于 2025-6-20 21:00
就是跟树枝一样,需要遍历每个分枝

建议学习C#,避免连map都不知道
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 10:26:25 来自手机 | 显示全部楼层
kozmosovia 发表于 2025-6-21 09:49
这种单纯嵌套,表层都是没有具体执行其他函数操作的情况,直接将最底层定义成函数用递归比lambda要好。用la ...

大佬,可以示范下写法吗?递归判断是list就继续mapcar吗?
回复 支持 反对

使用道具 举报

发表于 2025-6-21 11:18:46 | 显示全部楼层
不说具体问题等于耍流氓
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 09:27 , Processed in 0.189391 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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