在我的 TCL 脚本中,我将一个空列表作为参数传递给过程。在过程中,我将值添加到列表中。但在该过程之外,列表的值不会反映出来。如何访问在 proc 中修改的同一列表?
注意:由于某些原因,我不想从过程中返回,为了保持我的要求简单,我没有在这里提到这些原因。
proc addNames { names } {
lappend names tom
lappend names harry
puts $names
}
set names {}
addNames $names
puts "Outside of proc: names"
puts $names
如果您不想
return
在您的过程中使用,那么您可以使用upvar
例如names
但是,请注意,这会在您的过程中创建对调用环境中是否存在的依赖。更灵活的方法可能是传入带有names
变量名称的参数: