在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5206|回复: 3

[求助] tcl中的Proc写法

[复制链接]
发表于 2021-12-15 11:03:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
tcl中的proc中有以下语法,很难理解这些语法如何使用,查了很多资料,但是都查不到相关资料;
  parse_proc_arguments -args $args opt

define_proc_argument

-define_args {}


发表于 2021-12-15 11:41:54 | 显示全部楼层
define_proc_attributes和parse_proc_arguments命令能够扩展tcl语言中proc的功能,创建和Synopsys命令一样具有help和属性的命令。

创建一个新的proc时,它具有以下固有属性:

•可以使用info body命令查看proc的内容

•proc可以被修改

•可以使用proc名称的缩写

•被放置在Procedures command group

通过使用define_proc_attributes命令, 可以



•指定命令的help文本

•指定参数规则

•是否禁止查看和修改

•是否禁止名称缩写

•指定command group

define_proc_attributes

使用define_proc_attributes命令来定义和更改proc的属性。其语法如下:

define_proc_attributes proc_name   
[-info info_text]
[-define_args arg_defs]
[-command_group group_name]
[-hide_body]
[-hidden]
[-permanent]
[-dont_abbrev]
proc_name 指定proc的名称

-info info_text 指定与help命令或者-help选项一起使用的help文本

-define_args arg_defs 指定proc参数的help文本及其属性

-permanent 防止修改proc

-dont_abbrev 无论sh_command_abbrev_mode变量设置什么,都防止使用proc的名称缩写



可以使用-define_args选项为该proc的参数指定help文本,并定义参数的数据类型和属性。



-define_args的参数是列表的列表。每个列表元素指定proc参数的属性

每个列表元素具有以下格式:

arg_name option_help value_help data_type attributes
arg_name 指定proc参数的名称

option_help 参数的简短描述

value_help 参数值的简短描述

data_type 指定参数的数据类型

attributes 指定参数的其他属性

define_proc_attributes Command Example



proc plus {a b}
{
return [expr $a + $b]
}
define_proc_attributes plus \
-info "Add two numbers" \
-define_args {
{a "first addend" a stringrequired} \
{b "second addend" b stringrequired} }

dc_shell> help  plus
plus                 # Add two numbers

dc_shell> help -verbose plus
Usage: plus # Add two numbers
a (first addend)
b (second addend)

dc_shell > plus 5 6
11
parse_proc_arguments

parse_proc_arguments命令可解析传递给proc的使用define_proc_attributes命令定义的参数。



通常,parse_proc_arguments是proc中第一个调用的命令来验证参数。不能在proc外使用parse_proc_arguments命令。



parse_proc_arguments的语法是

parse_proc_arguments -args arg_list result_array
-args arg_list 指定传递给proc的参数列表。

result_array 指定数组存储解析的参数。

proc plus { args }  ## 关键字 args 表示可变个数的参数
{parse_proc_arguments -args $args results    ## 将参数保存到数组中,数组名为 results,数组元素名字是参数名,元素值是参数值
foreach argname [array names results]
{
echo " $results($argname)"}
}
define_proc_attributes plus \
-info "echo two numbers" \
-define_args {
{a "first addend" a string required} \
{b "second addend" b string required} }
plus显示了parse_proc_arguments的使用。plus接受各种类型的参数,然后打印出来。

dc_shell> plus  a b
a  b
另外可以通过

info body procedure_name

info args procedure_name

proc_body procedure_name

proc_args procedure_name



分别打印出proc的主体和参数



如果不使用parse_proc_arguments命令,则proc将无法响应-help选项。 但是,始终可以使用help命令。
 楼主| 发表于 2021-12-15 14:34:11 | 显示全部楼层


489315174 发表于 2021-12-15 11:41
define_proc_attributes和parse_proc_arguments命令能够扩展tcl语言中proc的功能,创建和Synopsys命令一样 ...


牛批,学习到了。感谢感谢
发表于 2024-4-2 16:04:02 | 显示全部楼层


489315174 发表于 2021-12-15 11:41
define_proc_attributes和parse_proc_arguments命令能够扩展tcl语言中proc的功能,创建和Synopsys命令一样 ...


感谢带佬!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 00:15 , Processed in 0.016187 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表