4

次のような単純な tcl proc があるとします。

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"}戻るの?

4

3 に答える 3

8
%proc foo {ab} {puts "$ a $ b"}
%info body foo
「$a$b」を置きます
%info args foo
ab

その他の特典については、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 に答える