edwin_chen 发表于 2006-4-3 13:14:50

tcl的问题

问题1:在tcl中
   split string ?splitChars?
把字符串string按分隔符splitChars分成一个个单词,返回由这些单词组成的串。如果splitChars
是一个空字符{},string被按字符分开。如果splitChars没有给出,以空格为分隔符。

很明显,后面只能带一个参数,?splitChars?
那么现在针对这句话,我不知道如何理解,set lst_files [ split $str_files{,} ] 因为其在后面是{,};
当然这个语句是对的,是公司产品的代码。

问题2:在tcl中
file的意思:进行文件名操作,用来操作文件或获取文件信息
join的意思:join命令是命令的逆。这个命令把list的所有元素合并到一个字符串中,中间以joinString分开。

但是看下面的语句,根据上面的说法,把file和join组合来看,好象总感觉不正确
source [ file join $scriptDir tools.tcl ]    (这是公司产品代码,也是正确的)

又想:
file 后面可以跟很多命令,所以我觉得file 和join应该是一个特殊命令,但是我没有查到,有没有人知道file join的作用,或者说我按这样子理解对不对?

edwin_chen 发表于 2006-4-4 19:38:41

我自己回答

问题1:在set lst_files [ split $str_files{,} ] ,字符串就被这样子分开,如:word1{,}word2{,}word3

问题2:source [ file join $scriptDir tools.tcl ];file join是把tools.tcl 添加到$scriptDir中($scriptDir,目录名)

天网 发表于 2006-4-5 10:43:33

join是进行字符串组合。
join $scriptDir tools.tcl 是把tools.tcl添加到$scriptDir 所代表的路径后面。

这类问题可以在script.net这类脚本编辑和调试工具上自己编例子,试出来,这样能提高自己分析能力.

edwin_chen 发表于 2006-4-26 15:50:10

再问一个tcl的问题

proc main { MyFile MyExtension} {
global project

# MyFile is redefined to managed the use of the character "."
# which is not supported in SCADE -script command call

set MyFile "${MyFile}.${MyExtension}"

foreach item $project {
    set fileRef
    SetAtt $fileRef "persistAs" "$MyFile"
    SetRole $fileRef "owner" $project
    Call $item Save
}

}
该函数大体功能能够明白,但是具体每一条语句是如何实现的,代表什么意思,不太明白
像Create,SetAtt, SetRole 几个命令 是实现了什么功能?
页: [1]
查看完整版本: tcl的问题