Data Types
1.List
1.1定义
- 列表就是一堆东西的有序集合;数字、单词、字符串或其他列表。甚至Tcl中的命令也只是列表,其中的第一个列表条目是proc的名称,列表的后续成员是proc的参数。
- list 直接定义列表
- split 用于按特殊字符将list 分隔开来
- 定义proc 时 名称与{ 之间必须有空格
- list 的索引是从0 开始到n-1的
- lindex命令访问单个列表成员
1.2 命令
1.2.1 concat
将参数连接到一个列表中。它还消除了参数中的前导和后导空格,并在它们之间添加了单个分隔符空格。concat的参数可以是单个元素,也可以是列表。如果一个参数已经是一个列表,那么该列表的内容将与其他参数连接起来。
1.2.2 lappend
添加到list末尾
1.2.3 linsert
插入到规定位置 2 (代表索引为2的位置)
1.2.4 lreplace
替换规定位置内的list 3 6(代表索引3-6)
1.2.5 llength
元素个数
1.2.6 lrange
return索引范围内的list
1.2.7 lsearch
类似正则表达式的查找
1.2.8 lsort
排序
1.3 subcommand
Modifying Strings - tolower, toupper, trim, format
2.Arrays
3.Flow
3.1 if命令
3.2 循环命令
3.2.1 while命令
set x 1
# This is a normal way to write a Tcl while loop.
while {$x < 5} {
puts "x is $x"
set x [expr {$x + 1}]
}
puts "exited first loop with X equal to $x\n"
********************************************
输出:
x is 1
x is 2
x is 3
x is 4
exited first loop with X equal to 5
********************************************
3.2.2 switch命令
# Name polygons, based on the number of edges.
set edge_count 3
switch $edge_count {
0 -
1 -
2 {
puts "Not a polygon."
}
3 {
puts "This is a triangle."
}
4 {
puts "This is a quadrilateral."
}
5 {
puts "This is a pentagon."
}
default {
puts "Unknown polygon."
}
}
*******************************************
输出:This is a triangle.
*******************************************
3.2.3 for命令
for {set i 0} {$i < 10} {incr i} {
puts "I inside first loop: $i"
}
for {set i 3} {$i < 2} {incr i} {
puts "I inside second loop: $i"
}
puts "Start"
set i 0
while {$i < 10} {
puts "I inside third loop: $i"
incr i
puts "I after incr: $i"
}
set i 0
incr i
# This is equivalent to:
set i [expr {$i + 1}]
***************************************************
输出:
I inside first loop: 0
I inside first loop: 1
I inside first loop: 2
I inside first loop: 3
I inside first loop: 4
I inside first loop: 5
I inside first loop: 6
I inside first loop: 7
I inside first loop: 8
I inside first loop: 9
Start
I inside third loop: 0
I after incr: 1
I inside third loop: 1
I after incr: 2
I inside third loop: 2
I after incr: 3
I inside third loop: 3
I after incr: 4
I inside third loop: 4
I after incr: 5
I inside third loop: 5
I after incr: 6
I inside third loop: 6
I after incr: 7
I inside third loop: 7
I after incr: 8
I inside third loop: 8
I after incr: 9
I inside third loop: 9
I after incr: 10
***************************************************