【问题标题】:How do I print out a tcl proc?如何打印出 tcl proc?
【发布时间】:2011-01-05 08:12:25
【问题描述】:
给定一个简单的 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"}?
【问题讨论】:
标签:
tcl
redefinition
proc-object
【解决方案1】:
% proc foo {a b} {puts "$a $b"}
% 信息正文 foo
放“$a $b”
% 信息参数 foo
一个
如需更多好东西,请重读 info(n)。
【解决方案2】:
@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
【解决方案3】:
使用 TclX 的 showproc:
package require Tclx
showproc foo