在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 578|回复: 11

[求助] skill代码求助

[复制链接]
发表于 2025-11-24 18:23:22 | 显示全部楼层 |阅读模式
悬赏30资产已解决
本帖最后由 VIKILA 于 2025-11-24 18:17 编辑
假如list1=("1" “2" "3”) list2=(1 2 3)
如果我想把list1转换为list2,那么用evalstring就可以
那么如果list3=("A" "B" "C") list4=(A B C)
list3想转化成list4该怎么操作呢?
evalstring("A")会报错 not a function --A ,好像只有evalstring(" 'A “)才可以实现目标功能。
下面是我用到的地方list2=mapcar(lambda((x) evalstring(x)) list1)
list1=("a" "b" "c".......)想list2想变成(a b c .....)需要怎么做呢?求大佬指教。

发表于 2025-11-24 18:23:23 | 显示全部楼层


   

        

                
  1. list1 = list("A" "B" "C")
  2. ("A" "B" "C")
  3. list2=mapcar(lambda((x)  concat(x)) list1)
  4. (A B C)
  5. list2
  6. (A B C)
            

   

    复制代码


捕获.PNG
回复

使用道具 举报

发表于 2025-11-24 20:42:26 | 显示全部楼层
不是很懂你的意思,a, b, c 这种格式在skill中被定义成变量,你想存的形式是symbol,它的形式应该是 list('a 'b 'c)才对
回复

使用道具 举报

 楼主| 发表于 2025-11-25 14:25:55 | 显示全部楼层
本帖最后由 VIKILA 于 2025-11-25 15:37 编辑



谢谢您的回答,我试了一下发现了另外的问题。我传了两张图第一张是我的代码,我想把有M1_NACTIVE的线的名字提取出来,第二张图是提取出来的数据。第二张图左边是不加list3=mapcar(lambda((x) concat(x))list1)这一行输出结果,右边是加了的,我不太能理解为什么右边的结果名字里面会有“\”,以我的理解是不会有才对,希望得到您的帮助,谢谢!
NETNAME.png
output.png
回复

使用道具 举报

发表于 2025-11-25 15:04:29 | 显示全部楼层
本帖最后由 luwang 于 2025-11-25 15:14 编辑

直接遍历list打印就可以去掉“”了。或者直接打印list2,这里list2应该是个string,
回复

使用道具 举报

 楼主| 发表于 2025-11-25 15:28:34 | 显示全部楼层


   
luwang 发表于 2025-11-25 15:04
直接遍历list打印就可以去掉“”了。或者直接打印list2,这里list2应该是个string, ...


我不是特别明白,,因为这个list2只是过滤出我想要的那个结构的单个线的名字,list1是把它们都合到一起,直接打印list2只会生成一个带“”的名字。
回复

使用道具 举报

 楼主| 发表于 2025-11-25 15:33:08 | 显示全部楼层


   
Stardclancy 发表于 2025-11-24 20:42
不是很懂你的意思,a, b, c 这种格式在skill中被定义成变量,你想存的形式是symbol,它的形式应该是 list(' ...


抱歉,因为我不是特别懂,所以可能没办法准确的回复你的问题,但是a,b,c不是我设置的变量,是我最终输出的结果就是这样的形式 '("A" "B" ...)我想对这个结果进行操作让他变成 '(A B ....)
回复

使用道具 举报

发表于 2025-11-25 20:24:28 | 显示全部楼层


   
VIKILA 发表于 2025-11-25 14:25
谢谢您的回答,我试了一下发现了另外的问题。我传了两张图第一张是我的代码,我想把有M1_NACTIVE的线的名 ...


因为代码中如果加了mapcar这个语句之后,因为你第一个问题所要达到的效果,mapcar函数返回的list3 中每一个元素都不是字符串,而是一个个atom (或者说没有初始化的变量 symbol)那么你打印他们出来,碰到 <> 这样的,当然系统需要帮你加上 escape, 即 \ , 才能帮你打印出来,否则就会跟自己内部语法关键字错乱了,所以需要escape。

然后其实我用mapcar纯粹就是你前面提出来的需求。这仅仅是一个示例,你的第一个问题提出的需求就是把一个字符串列表转换为一个以 atom 为元素的列表,那就是像我给你的一行代码那样做就好了。

atom这个概念好像是从Prolog或者Lisp里面来的(sorry好久不做coding了), 毕竟SKILL和Lisp也是有很深的渊源的。


回复

使用道具 举报

 楼主| 发表于 2025-11-26 09:02:23 | 显示全部楼层


   
amodaman 发表于 2025-11-25 20:24
因为代码中如果加了mapcar这个语句之后,因为你第一个问题所要达到的效果,mapcar函数返回的list3 中每一 ...


明白了,谢谢!
回复

使用道具 举报

发表于 2025-11-26 09:39:05 | 显示全部楼层
本帖最后由 luwang 于 2025-11-26 09:59 编辑


   
VIKILA 发表于 2025-11-25 15:28
我不是特别明白,,因为这个list2只是过滤出我想要的那个结构的单个线的名字,list1是把它们都合到一起, ...


我研究下看看


   

        

                
  1. a=list("net_<1>" "net_<2>" "net_<3>" )
  2. port=outfile("./test_1")
  3. foreach(a1 a  
  4.            fprintf(port "%s\t" a1)
  5. )
  6. close(port)
            

   

    复制代码

                               
登录/注册后可看大图
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

手机版| 小黑屋| 关于我们| 联系我们| 用户协议&隐私声明| 版权投诉通道| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 ) |网站地图

GMT+8, 2025-12-18 10:57 , Processed in 0.029706 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表