1

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

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

但我收到一条错误消息,说“大括号后有多余的字符”

如何在 if 语句中展开列表

4

1 回答 1

4

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

但真的,请升级

于 2015-01-06T15:53:47.870 回答