TCL函数“参数自动补全” 与 “help 信息显示”

tcl 函数参数自动补全和 help 信息显示

在EDA tool 中使用命令时,命令的参数可以通过 tab 键自动补全,而且可以使用 -help 显示帮助信息,使用起来很方便;

那么我们自己编写的 TCL 过程函数能否也实现 参数自动补全和 help 显示帮助信息呢?

参数自动补全可以用 define_proc_attribute 实现,而 -help 显示帮助可以用 parse_proc_arguments 实现

举个栗子:

proc  test_proc {args} {       ## 关键字 args 表示可变个数的参数
     parse_proc_arguments  -args  $args  results  ## 将参数保存到数组中,数组名为 results,数组元素名字是参数名,元素值是参数值

     if { [array names  results {-add}] != ""} {  ## 匹配数组results 中符合正则表达式“{-add}”的元素名字,用于检测是否给出了 -add 参数
          echo  "add num  $results(-add) !"    ## $results{-add} 是数组元素值,即 -add 参数的值
     }

     if { [array names  results {-reomve}] != "" } {  
          echo  "remove all !"
     }

}

define_proc_attributes  test_proc  \  ## 这段程式定义 help 信息和参数自动补全
         -info  "proc test code example " \
         -define_args {  ## 定义参数名字,输入时可以自动补全
                  {-add "add more "  "num"  int  optional }  ## 参数名字-add,帮助信息 add more ,参数值 num ,参数值数据类型 int ,参数是否是必须的 optional
                  {-remove  "reomve all "  ""  boolean  optional }
          }

这样定义之后,在EDA tool 中 敲命令 test_proc -rem[tab]  可以用 tab 键自动补全,用 test_proc -help 可以显示帮助信息

 

注意几点:

参数列表中的 args 是一个关键字,表示可变个数的参数

如果没有写 parse_proc_arguments ,则无法显示 -help 信息

array names  results  {-add} ,其中 results 是数组名, {-add} 是正则表达式,返回array 中 符合这个表达式的元素的名字

$results(-add) 返回数组元素值

 

posted @ 2018-06-06 13:59  いつまでも  阅读(3457)  评论(0编辑  收藏  举报