TCL传递变量给进程

  • 本文关键字:进程 变量 TCL tcl
  • 更新时间 :
  • 英文 :


将参数传递给进程,预期结果是proc中的puts $cust_id将打印123而不是$cust_id

proc hello {cust_id} {
puts $cust_id
}
set cust_id 123
puts $cust_id
hello {$cust_id}

输出
123
$cust_id

当你调用hello时,你给它一个,它打印这个值(因为你把它传递给了puts)。当你打电话时:

puts $cust_id

你告诉Tcl读取cust_id变量并将其作为puts的参数字。但是如果你这样做了:

hello {$cust_id}

则禁用替换(这是Tcl中将内容放在大括号中的字面意思,而总是was),因此您将$cust_id传递给hello(并打印)。


可以将变量传递给过程。您可以为它们提供变量的名称,然后使用upvar将其绑定到本地名称。这样的:

proc hello {varName} {
upvar $varName someLocalName
puts $someLocalName
}
set cust_id 123
hello cust_id

注意,这正是上面的set命令所使用的模式。它没什么特别的(除了它是由Tcl运行时提供的;它是标准库,而不是语言本身)。

是的,upvar的名称是特殊的(它将变量名称转换为变量),它与uplevel一起,是Tcl的关键特性之一,其他语言没有。

最新更新