1

我有一个 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 个参数?

谢谢

4

1 回答 1

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 过程中使用了不同的变量名来证明无论你的局部变量是什么,Tcl 都会将传递给下一个过程。

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

于 2012-12-28T18:48:39.303 回答