在Tcl中实现包装函数

时间:2015-03-11 05:24:35

标签: tcl

我想包装tcl interp命令并对某些选项进行特殊处理

我的代码看起来像

rename ::interp ::interp_old
proc interp { args } {
    # my code
    # call interp_old with args
}

我的问题是如何使用interp_old致电$args。我尝试了eval [concat interp_old $args],但在某些情况下,当参数是嵌套列表时,它无效。

1 个答案:

答案 0 :(得分:4)

在tcl的当前版本中,您应该能够使用{*}(splat)运算符:

interp_old {*}$args

在没有splat操作符的旧版本中,您可以仔细评估它:

eval [linsert $args 0 interp_old]

我们使用列表操作(linsert)来正确处理args中的空格。