4

给定一个简单的 tcl proc

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

我可以使用什么 tcl 命令来打印出程序foo……也就是说,我想要返回 proc的文本……

例如:

% 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"}回来?

4

3 回答 3

8
% proc foo {ab} {puts "$a $b"}
% 信息正文 foo
放“$a $b”
% 信息参数 foo
抗体

如需更多好东西,请重新阅读 info(n)。

于 2010-01-15T01:55:15.003 回答
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
于 2010-01-15T11:46:57.567 回答
0

使用 TclX 的 showproc:

package require Tclx
showproc foo
于 2010-01-25T18:40:04.010 回答