我尝试在tcl的if语句中使用参数列表($ options)的扩展
if {! [runCommandInRepo $componentpath git init {*}$options] } { exit 1 }
但是我收到一个错误,说“在close-brace之后有额外的字符”
如何在if语句中扩展列表
答案 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]
。 保证所有可能的故障模式(或者至少他们会可靠地生成一个很好的错误消息,告诉您确切的问题是什么)。
但是真的, 升级 请!