2010-01-15 74 views
4

給出一個簡單的TCL PROC像如何打印出一個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"}

回答

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

欲瞭解更多的好消息,請重新閱讀info(n)。

6

@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 
0

使用TclX的showproc:

package require Tclx 
showproc foo