如何打印出tcl proc?

时间:2010-01-15 01:07:10

标签: tcl redefinition proc-object

给出一个简单的tcl proc,如

proc foo {a b} {puts "$a $b"}

我可以用什么tcl命令打印出程序foo ...这就是我想要proc的 text ...

例如:

% proc foo {a b} {puts "$a $b"}
% foo a b
  a b

% puts $foo
  can't read "foo": no such variable

如何让foo {a b} {puts "$a $b"}回来?

3 个答案:

答案 0 :(得分:8)

% proc foo {a b} {puts "$a $b"}
% info body foo
puts "$a $b"
% info args foo
a b

要获得更多好处,请重读信息(n)。

答案 1 :(得分:7)

@Henry,如果任何参数都有默认值,那就有点复杂了:

proc foo {a {b bar}} {
    puts "$a $b"
}

proc info:wholeproc procname {
    set result [list proc $procname]
    set args {}
    foreach arg [info args $procname] {
        if {[info default $procname $arg value]} {
            lappend args [list $arg $value]
        } else {
            lappend args $arg
        }
    }
    lappend result [list $args]
    lappend result [list [info body $procname]]
    return [join $result]
}

info:wholeproc foo

答案 2 :(得分:0)

使用TclX的showproc:

package require Tclx
showproc foo