ICC布局布线 第四课

第四课

TCL语言

  • simple text out
puts "Hello"
puts {Hello}

用大括号则文本不转义
**有的时候文本会出现乱码^M,是因为unix和windows对换行符处理不同,lunix用\n换行,windows用\r\n。推荐用ultraedit,可以自动替换最后的换行符。
tcl每一行的结束用回车标志,也可以用分号

  • variables
set a 5
set b {a b c d}
set b 1.25
set c "Hello"

与c语言等有强制类型的语言不同,tcl是根据上下文分析类型的语言。

  • substitutions
set msg "a is $a;the square of a is [expr $a * $a]"

用$a代替变量,要使用表达式必须要用[expr]包含,[]表示中括号内不是一个tcl命令
若把这句代码的""改成{},则[expr]将不会被识别为命令,只是单纯的文本

[expr]的作用
首先设置a和b的值

set a 10
set b "10"

若要通过b访问a的值,则需要使用[expr]

puts $$b    ->输出的是字符$a
puts [expr $$b]   ->输出的是10

eval命令也可以起到相似的效果

  • append
append x 89

append可以返回做出改动的新字符串,但是原字符串不会变化

  • switch
    tcl语言的switch默认只执行符合项,执行完就跳出结构,在语句后面加-才会继续执行下一句。(与C语言进行区别)
switch $x {
a -
b {incr t1}
c {incr t2}
}

Control Structures

tcl语言的控制结构中,要注意在关键字和符号之间加空格,否则解释器可能无法识别
例如if {a} 语句中if和{a}之间要加上空格

  • lists
    列表相当于数组
set x {a b c}					设置一个数组
concat {a b c} {d e}    	连接数组中的元素
lappend x tt					在数组后加上元素并改变原变量
linsert $x 2 kk				在数组的第2个元素位置插入元素并返回,但不改变原变量
llength $x						返回数组所含元素数
lindex $x 0					返回数组中第0个元素的值
split "a/b/c"					将字符串转化为list
join {a b c}					将list转化为字符串
  • while,for,foreach
while {$i>0} {
……
}

foreach i $a {      注意这里的i不能写成$i
……
}
  • procedures
proc main{输入} {
……
}

File access

在这里插入图片描述
r表示是读入模式,将文件名字赋给f


版权声明:本文为qq_38453556原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。