Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11021|回复: 9

[skill函数] skill用于创建symbol的函数gensym

[复制链接]
发表于 2013-4-6 15:42:18 | 显示全部楼层 |阅读模式

使用gensym函数可创建一个symbol。

创建symbol时需给出symbol的名字。

gensym函数返回新创建的symbol,新symbol的值为unbound。

例如:

gensym(‘net) => net2

可在skill中验证。


发表于 2013-5-22 22:57:37 | 显示全部楼层
翻到这个函数我用的较多,因为我没有更好的办法了,这样用起来感觉效率不高,希望管理员看到后能指点一下:
defvar( i , 0 )
example = makeTable("study" nil)
example[i] = gensym()
example[i]->x = 100.00
example[i]->y = 200.00
通常我用这个功能去遍历某些焊盘、字符、器件,并存储其参数,但效率不高,不知道管理员有没有更好的办法,有空帮忙解答一下!谢谢!
 楼主| 发表于 2013-5-23 21:44:41 | 显示全部楼层
chuankay 发表于 2013-5-22 22:57
翻到这个函数我用的较多,因为我没有更好的办法了,这样用起来感觉效率不高,希望管理员看到后能指点一下:
...

你没必要通过gensym定义一个变量为symbol
Skill中的变量可以不用提前声明。当程序在一段代码中遇到一个变量时,Skill 会自动创建该变量。并将其各种参数传递给该变量。
你只需要获取你需要目标的DBID即可,然后将DBID传递个该变量,该变量就继承了目标所有参数。
发表于 2013-5-23 22:46:15 | 显示全部楼层
关于变量自动创建概念我明白了,可能是我用的不分场合了。
发表于 2013-5-23 23:02:30 | 显示全部楼层
我觉得我是举个例子补充一下吧,避免之前发的代码造成误解;
如:一块板子分给两个人做,一个人布线,另一个人去调丝印啊、加丝印啊(不限于丝印),加了很多丝印。后期整合,需要把加的丝印转移到另一块板中,和丝印坐标转移到另一板中,那么我就用了以上描述的函数makeTable,table中包含了新加丝印的text、location、rotate、layer、ismirror等等,若不为table[i]分配一个symbol属性的话,将会出现无法为table[i]分配属性,可能出现报错。所以很被动的用了gensym()函数,真是迫不得已,个人认为效率低、又麻烦,一时没有更好的解决办法。
发表于 2013-6-9 15:51:41 | 显示全部楼层
这里的symbol是指创建成一个符号?还是不明白什么意思啊。
发表于 2013-8-8 18:07:31 | 显示全部楼层
水平比较浅,没看太懂,先记下。
发表于 2013-9-24 11:39:06 | 显示全部楼层
目前还看不懂,但先收藏,好好学习!
发表于 2014-6-24 14:45:34 | 显示全部楼层
谢谢楼主分享
发表于 2014-10-30 00:27:54 | 显示全部楼层
没看懂,但是支持一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-27 12:03 , Processed in 0.119058 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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