Tcl过程无法读取另一个过程传入的变量

时间:2012-12-28 18:23:35

标签: tcl

我有一个包装另一个过程的Tcl过程并传递一些参数,如下所示:

proc OuterProc {
  ...some code here...
  InnerProc $a $b
}

proc InnerProc { a, b } {
  set someVar1 [split $a]
  set someVar2 [split $b]
  ...error: cannot read variable a or b
}

为什么InnerProc看不到传入的2个参数?

由于

1 个答案:

答案 0 :(得分:4)

问题中显示的问题是,您的参数列表中有逗号。请注意,Tcl通常使用空格来分隔参数,而不是逗号。

proc OuterProc {} {
    set x foo
    set y bar
    InnerProc $x $y
}
proc InnerProc {a b} {
    puts "a=$a"
    puts "b=$b"
}
OuterProc

产生

a=foo
b=bar

我在OuterProc程序中使用了不同的变量名来证明你的本地变量 names 是什么并不重要,Tcl会将传递给下一个PROC。

如果这不是您的问题,那么您需要更具体地向我们展示您的真实代码。