我想包装tcl interp
命令并对某些选项进行特殊处理
我的代码看起来像
rename ::interp ::interp_old
proc interp { args } {
# my code
# call interp_old with args
}
我的问题是如何使用interp_old
致电$args
。我尝试了eval [concat interp_old $args]
,但在某些情况下,当参数是嵌套列表时,它无效。
答案 0 :(得分:4)
在tcl的当前版本中,您应该能够使用{*}
(splat)运算符:
interp_old {*}$args
在没有splat操作符的旧版本中,您可以仔细评估它:
eval [linsert $args 0 interp_old]
我们使用列表操作(linsert
)来正确处理args中的空格。