vivienluo 发表于 2013-4-6 15:42:18

skill用于创建symbol的函数gensym

使用gensym函数可创建一个symbol。创建symbol时需给出symbol的名字。gensym函数返回新创建的symbol,新symbol的值为unbound。例如:gensym(‘net) => net2可在skill中验证。

chuankay 发表于 2013-5-22 22:57:37

翻到这个函数我用的较多,因为我没有更好的办法了,这样用起来感觉效率不高,希望管理员看到后能指点一下:
defvar( i , 0 )
example = makeTable("study" nil)
example = gensym()
example->x = 100.00
example->y = 200.00
通常我用这个功能去遍历某些焊盘、字符、器件,并存储其参数,但效率不高,不知道管理员有没有更好的办法,有空帮忙解答一下!谢谢!

vivienluo 发表于 2013-5-23 21:44:41

chuankay 发表于 2013-5-22 22:57 static/image/common/back.gif
翻到这个函数我用的较多,因为我没有更好的办法了,这样用起来感觉效率不高,希望管理员看到后能指点一下:
...

你没必要通过gensym定义一个变量为symbol
Skill中的变量可以不用提前声明。当程序在一段代码中遇到一个变量时,Skill 会自动创建该变量。并将其各种参数传递给该变量。
你只需要获取你需要目标的DBID即可,然后将DBID传递个该变量,该变量就继承了目标所有参数。

chuankay 发表于 2013-5-23 22:46:15

关于变量自动创建概念我明白了,可能是我用的不分场合了。

chuankay 发表于 2013-5-23 23:02:30

我觉得我是举个例子补充一下吧,避免之前发的代码造成误解;
如:一块板子分给两个人做,一个人布线,另一个人去调丝印啊、加丝印啊(不限于丝印),加了很多丝印。后期整合,需要把加的丝印转移到另一块板中,和丝印坐标转移到另一板中,那么我就用了以上描述的函数makeTable,table中包含了新加丝印的text、location、rotate、layer、ismirror等等,若不为table分配一个symbol属性的话,将会出现无法为table分配属性,可能出现报错。所以很被动的用了gensym()函数,真是迫不得已,个人认为效率低、又麻烦,一时没有更好的解决办法。

UStar987 发表于 2013-6-9 15:51:41

这里的symbol是指创建成一个符号?还是不明白什么意思啊。

appler 发表于 2013-8-8 18:07:31

水平比较浅,没看太懂,先记下。

美好生活 发表于 2013-9-24 11:39:06

目前还看不懂,但先收藏,好好学习!

kingsogo 发表于 2014-6-24 14:45:34

谢谢楼主分享

superking18 发表于 2014-10-30 00:27:54

没看懂,但是支持一下
页: [1]
查看完整版本: skill用于创建symbol的函数gensym