清單是Tcl的基本可用資料類型之一。它是用于表示項目的有序集合。它可以包括不同類型的在同一清單的項目。此外,一個清單可以包含另一個清單。
需要注意的一個重要的事情是,清單表示為完全串并處理在需要時,形成的各個項目。是以要避免大的清單,在這種情況下,可使用數組代替。
建立一個清單
清單的一般文法如下。
set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or
set listName [split "items separated by a character" split_character]
一些例子如下面給出。
#!/usr/bin/tclsh
set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2
puts $colorList3
當上述代碼被執行時,它會産生以下結果。
red green blue
red green blue
red green blue
追加項目到清單
追加項目到清單的文法如下。
append listName split_character value
# or
lappend listName value
#!/usr/bin/tclsh
set var orange
append var " " "blue"
lappend var "red"
lappend var "green"
puts $var
orange blue red green
清單長度
清單長度的文法如下。
llength listName
例如,清單長度如下例所示。
#!/usr/bin/tclsh
set var {orange blue red green}
puts [llength $var]
當執行上面的代碼,産生以下結果:
4
清單索引項
用于選擇在指定索引的清單項如下。
lindex listname index
例如,清單索引項目如下所示。
#!/usr/bin/tclsh
set var {orange blue red green}
puts [lindex $var 1]
blue
插入索引項目
在清單特定索引插入項目的文法如下。
linsert $listname index value1 value2..valuen
例如,在清單特定的索引插入項目如下。
#!/usr/bin/tclsh
set var {orange blue red green}
set var [linsert $var 3 black white]
puts $var
orange blue red black white green
更換項目索引
用于替換清單項以特定索引的文法如下。
lreplace $listname firstindex lastindex value1 value2
例如用于替換清單項以特定的索引如下。
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var
orange blue black white
設定指定項目
用于設定清單項在特定索引下面的文法給出。
lset listname index value
例如設定清單項的索引具體如下。
#!/usr/bin/tclsh
set var {orange blue red green}
lset var 0 black
puts $var
black blue red green
轉換清單變量
複制值到變量的文法如下。
lassign listname variable1 variable2.. variablen
例如,用于将清單到變量如下。
#!/usr/bin/tclsh
set var {orange blue red green}
lassign $var colour1 colour2
puts $colour1
puts $colour2
orange
blue
排序清單
lsort listname
#!/usr/bin/tclsh
set var {orange blue red green}
set var [lsort $var]
puts $var
blue green orange red