EDA365电子工程师网

标题: [已解决]请问怎么拷贝table的数据而不改变原table的数据呢 [打印本页]

作者: 361553894    时间: 2016-1-25 13:24
标题: [已解决]请问怎么拷贝table的数据而不改变原table的数据呢
本帖最后由 361553894 于 2016-1-25 14:29 编辑

在使用newTable = oldTable后
发现对newTable进行操作后,oldTable也同样变化了
说明skill针对 newTable = oldTable  不是常规意义上的赋值,而是复制数据地址
也就是newTable完全等同于oldTable
怎样才能利用table内的数据,但是不改变原table的数据呢?(原数据需要针对不同情况进行调整,所以原始数据不能改变)

作者: XYX365    时间: 2016-1-25 13:39
以下是我的方法:

;拷貝一份原來的值
for(xKey 1 length(oldTable)
        newTable[xKey] = copy(oldTable[xKey])
)


作者: 361553894    时间: 2016-1-25 13:58
本帖最后由 361553894 于 2016-1-25 14:00 编辑
XYX365 发表于 2016-1-25 13:39
以下是我的方法:

;拷貝一份原來的值


我原本使用的table的array并不是数字,而是任意的字符串
也就是
lName = sprintf(nil "%.2f(%s)" width layer)
lw[lName] = axlDBGetLength(seg) + lw[lName]
难道我需要把所有的lName记录下来?

对不同的线宽和层面做长度的累加,遇到分支后分别累加长度


作者: XYX365    时间: 2016-1-25 14:02
本帖最后由 XYX365 于 2016-1-25 14:05 编辑
361553894 发表于 2016-1-25 13:58
我原本使用的table的array并不是数字,而是任意的字符串
也就是
lName = sprintf(nil "%.2f(%s)" wid ...

或是改成下面

foreach(sKey oldTable->?
        newTable[sKey] = copy(oldTable[sKey])
)

作者: 361553894    时间: 2016-1-25 14:25
本帖最后由 361553894 于 2016-1-25 14:31 编辑
XYX365 发表于 2016-1-25 13:39
以下是我的方法:

;拷貝一份原來的值


lwx = makeTable("lwx" 0)
foreach(lName lw->? lwx[lName] = lwx[lName] + lw[lName])
目前的做法





欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2