天天看點

初識Tcl(八):Tcl 清單

清單是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      

繼續閱讀