在if语句中使用TCL扩展

时间:2015-01-06 15:45:47

标签: if-statement tcl expand braces

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

if {! [runCommandInRepo $componentpath git init {*}$options] } { exit 1 }

但是我收到一个错误,说“在close-brace之后有额外的字符”

如何在if语句中扩展列表

1 个答案:

答案 0 :(得分:3)

听起来你在那里使用的是非常旧版本的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]保证所有可能的故障模式(或者至少他们会可靠地生成一个很好的错误消息,告诉您确切的问题是什么)。

但是真的, 升级 请!

相关问题