首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >upvar在“foreach parArray $parArrays {upvar $parArray $parArray}”中是如何工作的?

upvar在“foreach parArray $parArrays {upvar $parArray $parArray}”中是如何工作的?
EN

Stack Overflow用户
提问于 2015-10-13 23:41:08
回答 1查看 77关注 0票数 1

我偶然发现了VLT sequencer脚本中的以下代码(部分

代码语言:javascript
复制
proc cnoseqImgAcqMoveToPixel {parArrays obsInfo} {    
   foreach parArray $parArrays {upvar $parArray $parArray}
   ...
}

我想知道是否有人能告诉我{ upvar $parArray $parArray}的用途是什么。

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 04:10:59

没有足够的信息可以绝对确定,但我可以大胆猜测。我猜想parArrays是一个数组变量名的列表,这些数组变量在cnoseqImgAcqMoveToPixel的调用者的作用域中。然后,foreach循环遍历数组变量名列表并调用upvarupvar命令将一个变量的名称放在调用堆栈的上一层(在本例中是上一级),并创建一个引用它的局部变量。在这种情况下,局部变量名与传入的数组变量名相同。最终结果是获取调用者作用域中的数组变量列表,并将它们转换为同名的局部变量。

在Tcl中,数组实际上是由字符串索引的变量集合,它们不能通过值传递。因此,使用upvar是一种通过引用传递数组的习惯用法。在这种情况下,它看起来像是通过引用访问一组数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33106961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档