我偶然发现了VLT sequencer脚本中的以下代码(部分
proc cnoseqImgAcqMoveToPixel {parArrays obsInfo} {
foreach parArray $parArrays {upvar $parArray $parArray}
...
}我想知道是否有人能告诉我{ upvar $parArray $parArray}的用途是什么。
发布于 2015-10-14 04:10:59
没有足够的信息可以绝对确定,但我可以大胆猜测。我猜想parArrays是一个数组变量名的列表,这些数组变量在cnoseqImgAcqMoveToPixel的调用者的作用域中。然后,foreach循环遍历数组变量名列表并调用upvar。upvar命令将一个变量的名称放在调用堆栈的上一层(在本例中是上一级),并创建一个引用它的局部变量。在这种情况下,局部变量名与传入的数组变量名相同。最终结果是获取调用者作用域中的数组变量列表,并将它们转换为同名的局部变量。
在Tcl中,数组实际上是由字符串索引的变量集合,它们不能通过值传递。因此,使用upvar是一种通过引用传递数组的习惯用法。在这种情况下,它看起来像是通过引用访问一组数组。
https://stackoverflow.com/questions/33106961
复制相似问题