【问题标题】: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
        

        【讨论】:

          猜你喜欢
          • 2016-02-25
          • 1970-01-01
          • 1970-01-01
          • 2014-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多