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