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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6361|回复: 10

[求助] TCL语言中选项的获取

[复制链接]
发表于 2013-11-7 14:17:38 | 显示全部楼层 |阅读模式
100资产
最近刚开始学习tcl,有一个问题请教大家:
如果我写一个proc,默认的proc参数只能按照顺序读取,如果希望是以选项的形式读取呢?
比如一个名字为create_var的proc,我希望他有两个或更多选项,如-direction ,-number,等等
就是说我想要把它写成一个软件中命令的形式,可以在命令行里指定其选项。
不知道说清楚没有
有没有语言包之类比如perl里的getOption的功能?
最好能给个例子出来,谢谢

最佳答案

查看完整内容

回复 6# yueluofenghen 可以实现你说的那种 -item1 value1 -item2 value2格式的: In the following example, the argHandler procedure accepts an optional argument of each type supported bydefine_proc_attributes, then displays the options and values received:proc argHandler {args} { parse_proc_arguments -args $args results foreach argname [array names results] { echo $argname = $results($argn ...
发表于 2013-11-7 14:17:39 | 显示全部楼层
本帖最后由 sjtusonic 于 2013-11-19 15:42 编辑

回复 6# yueluofenghen


   可以实现你说的那种 -item1 value1 -item2 value2格式的:

In the following example, the argHandler procedure accepts an optional argument of each type supported bydefine_proc_attributes, then displays the options and values received:

proc argHandler {args} {
parse_proc_arguments -args $args results  
foreach argname [array names results] {   
echo $argname = $results($argname)  
}
}
define_proc_attributes argHandler \  
-info Arguments processor \  
-define_args {  
{{-Oos oos help AnOos one_of_string      
{required value_help {values {a b}}}}   
{-Int int help AnInt int optional}   
{-Float float help AFloat float optional}   
{-Bool "bool help"  boolean optional}   
{-String "string help" AString string optional}   
{-List "list help" AList list optional}}   
{-IDup int dup AIDup int {optional merge_duplicates}}}
 楼主| 发表于 2013-11-7 17:14:55 | 显示全部楼层
居然没人看到。。。。。。
 楼主| 发表于 2013-11-13 10:31:52 | 显示全部楼层
没人回我就一直顶
发表于 2013-11-13 11:50:54 | 显示全部楼层
本帖最后由 sjtusonic 于 2013-11-13 17:19 编辑

EDA 工具内嵌有这种支持,不知你的应用环境是否在synopsys的EDA工具中?
参见:http://blog.sina.com.cn/s/blog_6840802c0100k1o0.html
发表于 2013-11-17 10:49:10 | 显示全部楼层
把选项option当做proc的参数传进去,proc create_var {option var1 var2 ...}
调用的时候,create_var $option $var1 $var2 ...
这里option 可以是    -direction ,-number,
这个option 变量 可以通过外部的输入抓进来
如 set option [lindex $argv 0]
这样就能实现你在命令行里指定其选项,选项再传到proc里面
 楼主| 发表于 2013-11-19 14:13:52 | 显示全部楼层



谢谢回复。
我需要使用的环境是基于tcl的eda环境。
我看了您推荐的文章,感觉还是有些区别,比如文章中示意的dc_rpt_cell命令,我可以指定它的选项,但是这个选项是没有包含参数的,就像5楼提到的一个选项是-direction,那么我希望可以指定-direction X或者-direction Y这样?也就是说-direction是该脚本/命令的一个选项,而X/Y是我给这个选项的一个参数.

~~不知道是不是没有看仔细,接下来我会把那个博客里相关文章都看一遍,谢谢
 楼主| 发表于 2013-11-19 14:19:00 | 显示全部楼层


把选项option当做proc的参数传进去,proc create_var {option var1 var2 ...}
调用的时候,create_var $o ...
jackiexiuyi 发表于 2013-11-17 10:49




谢谢回答!
这种方法的确可行,但是问题是这些参数之间的顺序就必须是固定的了,而要是再对参数做处理以便让其可以根据选项名称的区别来识别参数的话,那么很可能这段代码会比我的主体代码要长的多~~~
所以我很想知道是不是存在一个module或说包,可以实现这个功能呢?
 楼主| 发表于 2013-11-20 15:05:38 | 显示全部楼层
回复 8# sjtusonic


    多谢多谢!我回去好好研究下
发表于 2022-3-27 09:44:00 | 显示全部楼层
help me a lot
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-3-28 21:34 , Processed in 0.028895 second(s), 8 queries , Gzip On, Redis On.

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