If statement 在if语句中使用TCL expand

If statement 在if语句中使用TCL expand,if-statement,tcl,expand,braces,If Statement,Tcl,Expand,Braces,我尝试在tcl中的if语句中使用参数列表($options)的展开 if {! [runCommandInRepo $componentpath git init {*}$options] } { exit 1 } 但我得到一个错误,说“右大括号后有额外字符” 如何在if语句中展开列表听起来像是在使用非常旧的Tcl版本,可能是8.4或更早版本。Tcl 8.5中添加了扩展语法。(仅供参考,不再支持8.4。) “修复”是仔细使用eval: if {! [eval [list runCommandI

我尝试在tcl中的if语句中使用参数列表($options)的展开

if {! [runCommandInRepo $componentpath git init {*}$options] } { exit 1 }
但我得到一个错误,说“右大括号后有额外字符”


如何在if语句中展开列表听起来像是在使用非常旧的Tcl版本,可能是8.4或更早版本。Tcl 8.5中添加了扩展语法。(仅供参考,不再支持8.4。)

“修复”是仔细使用
eval

if {! [eval [list runCommandInRepo $componentpath git init] [lrange $options 0 end]] } { exit 1 }
是的,那就是
eval[list…][lrange…0 end]
。这保证了所有可能的故障模式都被排除(或者至少它们会可靠地生成一条很好的错误消息,准确地告诉您问题所在)


但是真的,请升级

听起来您使用的是非常旧的Tcl版本,可能是8.4或更早版本。Tcl 8.5中添加了扩展语法。(仅供参考,不再支持8.4。)

“修复”是仔细使用
eval

if {! [eval [list runCommandInRepo $componentpath git init] [lrange $options 0 end]] } { exit 1 }
是的,那就是
eval[list…][lrange…0 end]
。这保证了所有可能的故障模式都被排除(或者至少它们会可靠地生成一条很好的错误消息,准确地告诉您问题所在)


但是真的,请升级

你能公布整个错误吗?你有没有试过把它分成几行来找出错误?你能把整个错误都贴出来吗?你试过把它分成多行来找出错误吗?哈!这就解释了为什么我们之前没有看到这一点。这个错误来自一个用户(客户机),他不知怎么地得到了这个错误,事实上,他仍然使用8.4(我不是;-))。请他升级,我们会看看结果如何。谢谢哈这就解释了为什么我们之前没有看到这一点。这个错误来自一个用户(客户机),他不知怎么地得到了这个错误,事实上,他仍然使用8.4(我不是;-))。请他升级,我们会看看结果如何。谢谢