如何升级参数名称(name2)?
how to uplevel argument name(name2)?
我想升级参数名称 kuku(pupu)。
我尝试使用下面的方法,但是 none of sthem 成功了。
global kuku(pupu)
uplevel kuku(pupu)
upvar kuku(pupu)
我怎样才能调高 var?
您应该能够使用 global 或 uplevel 从 proc 内部创建变量。特别是对于全局,如果是数组就不能传递变量名,只能传递数组名,如果上层命名空间是全局的:
proc foo {} {
global kuku
set kuku(pupu) "some value"
# anything else to do
return
}
foo
puts $kuku(pupu)
您可以像这样使用 uplevel
有点不同:
proc foo {} {
set kuku(pupu) "some value"
uplevel [list set kuku(pupu) $kuku(pupu)]
# anything else to do
return
}
foo
puts $kuku(pupu)
使用 upvar
会有点不同:
proc foo {arrayName} {
upvar $arrayName newName
set newName(pupu) "some value"
# anything else to do
return
}
foo kuku
puts $kuku(pupu)
海事组织:
- 使用
global
是最简单的,但您需要记住它仅适用于数组名称,对于数组
- 对于
uplevel
,你必须考虑应该在上层命名空间中执行什么(在这种情况下,我希望 set kuku(pupu) "some value"
在上层命名空间中执行)并且可能有点困难把握可能。
upvar
从上层命名空间中的变量创建别名,并使其可在本地访问。别名可以具有相同的名称,如果您使用与原始名称不同的名称,则不会那么混乱。有点类似于global
,它只对数组名起作用。
我想升级参数名称 kuku(pupu)。 我尝试使用下面的方法,但是 none of sthem 成功了。
global kuku(pupu)
uplevel kuku(pupu)
upvar kuku(pupu)
我怎样才能调高 var?
您应该能够使用 global 或 uplevel 从 proc 内部创建变量。特别是对于全局,如果是数组就不能传递变量名,只能传递数组名,如果上层命名空间是全局的:
proc foo {} {
global kuku
set kuku(pupu) "some value"
# anything else to do
return
}
foo
puts $kuku(pupu)
您可以像这样使用 uplevel
有点不同:
proc foo {} {
set kuku(pupu) "some value"
uplevel [list set kuku(pupu) $kuku(pupu)]
# anything else to do
return
}
foo
puts $kuku(pupu)
使用 upvar
会有点不同:
proc foo {arrayName} {
upvar $arrayName newName
set newName(pupu) "some value"
# anything else to do
return
}
foo kuku
puts $kuku(pupu)
海事组织:
- 使用
global
是最简单的,但您需要记住它仅适用于数组名称,对于数组 - 对于
uplevel
,你必须考虑应该在上层命名空间中执行什么(在这种情况下,我希望set kuku(pupu) "some value"
在上层命名空间中执行)并且可能有点困难把握可能。 upvar
从上层命名空间中的变量创建别名,并使其可在本地访问。别名可以具有相同的名称,如果您使用与原始名称不同的名称,则不会那么混乱。有点类似于global
,它只对数组名起作用。