我是Tcl语言的学习者,我无法理解此proc中 global 的用法:
<div>{{ time | async }}</div>
“全局变量” 是指名为proc linkPeers { link } {
global $link
set entry [lsearch -inline [set $link] "nodes {*}"]
return [lindex $entry 1]
}
的外部全局变量。
“全局$ var” 我听不懂,谁能告诉我?
答案 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
可以让我们在本地使用不同的固定名称,这使得在其他地方使用起来更容易。
原始代码中的错误?最好不要将全局变量称为link
或entry
!