我可以在Tcl中理解“ global var”,但是“ global $ var”是什么意思?

时间:2018-12-07 13:35:51

标签: tcl

我是Tcl语言的学习者,我无法理解此proc中 global 的用法:

<div>{{ time | async }}</div>

“全局变量” 是指名为proc linkPeers { link } { global $link set entry [lsearch -inline [set $link] "nodes {*}"] return [lindex $entry 1] } 的外部全局变量。

“全局$ var” 我听不懂,谁能告诉我?

1 个答案:

答案 0 :(得分:2)

代码有点奇怪,实际上是错误的。

应该是这样(引号中的{#0仅出于语法突出显示的原因):

proc linkPeers { link } {
    upvar "#0" $link items
    set entry [lsearch -inline $items "nodes {*}"]
    return [lindex $entry 1]
} 

关键是link参数是全局变量的名称,但是您希望在过程中将其作为局部变量进行访问。 global命令可以执行此操作,但是名称是一个变量,因此您必须使用[set $link]进行后续读取。改用upvar #0代替global可以让我们在本地使用不同的固定名称,这使得在其他地方使用起来更容易。

原始代码中的错误?最好不要将全局变量称为linkentry