tcl - 如何保存进入proc的所有参数以便以后重复使用?

pep*_*dip 2 parameters procedure tcl

我正在使用形成数据包内容的函数(A).该函数接受任意数量的参数.我希望实现另一个函数(B),它形成由(A)形成的最后一个数据包.我希望通过运行(A)与我上次使用的相同参数(A)来实现这一点.诀窍是(A)使用类似的东西接受未知数量的参数

proc example {first {second ""} args}
Run Code Online (Sandbox Code Playgroud)

是否有任何简单的方法可以快速保存所有参数,然后在以后再次使用相同的参数调用(A)?

Don*_*ows 5

最简单的方法是在运行时A创建B,在以下帮助下执行它非常简单info level 0:

proc A {p q {r ...} args} {
    # Make B which will call us *exactly* as we've just been called
    proc B {} [list uplevel 1 [info level 0]]
    # ... continue with normal processing ...
}
Run Code Online (Sandbox Code Playgroud)

对此有一些警告(例如,如果您正在使用别名或复杂的跨命名空间工作进行繁重的处理),但对于大多数代码 - 尤其是您想要这样的事情 - 这并不是什么大问题.


在8.6中,proc B {} [list tailcall {*}[info level 0]]改为使用.