全部, 我要做的是:Proc A调用Proc B,使用B的uplevel命令我试图在proc A范围中设置变量。当值有空格时发生错误。
proc B { } {
set string1 "Test"
set string2 "Test with space"
uplevel 1 set key1 $string1
uplevel 1 set key2 $string2
return 0
}
proc A { } {
set res [B]
puts "key1 is $key1"
puts "key2 is $key2"
}
如果我注释掉key2,它可以正常工作。添加key2时,它会失败,并显示以下错误。
wrong # args: should be "set varName ?newValue?"
while executing
"set key2 Test with space"
有关如何克服此错误的任何建议。感谢您的帮助。
答案 0 :(得分:5)
uplevel 1 set key2 $string2
变为set key1 test with space
,这就是您收到错误的原因。
最佳做法是使用[list]
:
uplevel 1 [list set key2 $string2]
这将保证格式良好的set
声明。