Как распечатать Tcl Proc? - PullRequest
       18

Как распечатать Tcl Proc?

4 голосов
/ 15 января 2010

Учитывая простой процесс tcl, как

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

Какую команду tcl я могу использовать для распечатки процедуры foo ... то есть я хочу текст процедуры возврата ...

Например:

% 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 ]

8 голосов
/ 15 января 2010
% proc foo {a b} {puts "$a $b"}
% info body foo
puts "$a $b"
% info args foo
a b

Для получения дополнительной информации перечитайте информацию (n).

7 голосов
/ 15 января 2010

@ Генри, это немного сложнее, чем если какие-либо аргументы имеют значения по умолчанию:

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
0 голосов
/ 25 января 2010

Использовать showproc TclX:

package require Tclx
showproc foo
...