在Tcl中实现包装器函数

在Tcl中实现包装器函数,tcl,Tcl,我想包装tcl interp命令,并对一些选项进行特殊处理 我的代码看起来像 rename ::interp ::interp_old proc interp { args } { # my code # call interp_old with args } 我的问题是如何使用$args调用interp_old。我尝试过eval[concat interp_old$args],但在某些情况下,当参数是嵌套列表时,它不起作用。在当前版本的tcl中,您应该能够使用{*}splat

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

我的代码看起来像

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

我的问题是如何使用$args调用interp_old。我尝试过eval[concat interp_old$args],但在某些情况下,当参数是嵌套列表时,它不起作用。

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

interp_old {*}$args
在没有splat操作符的旧版本中,您可以仔细评估它:

eval [linsert $args 0 interp_old]

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

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

interp_old {*}$args
在没有splat操作符的旧版本中,您可以仔细评估它:

eval [linsert $args 0 interp_old]

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

您可以尝试一下,将option作为第一个参数,args作为第二个参数,比如proc interp{option args}{}?我已经尝试过了。同样的问题也存在,如何调用它而不是使用eval,即使用interp_old{*}$args?您可以尝试使用option作为第一个参数,args作为第二个参数,比如proc interp{option args}{}?我已经尝试过了。同样的问题也存在,如何调用它而不是使用eval,即使用interp_old{*}$args?