列表是Tcl的基本可用數(shù)據(jù)類(lèi)型之一。它是用于表示項(xiàng)目的有序集合。它可以包括不同類(lèi)型的在同一列表的項(xiàng)目。此外,一個(gè)列表可以包含另一個(gè)列表。
需要注意的一個(gè)重要的事情是,列表表示為完全串并處理在需要時(shí),形成的各個(gè)項(xiàng)目。所以要避免大的列表,在這種情況下,可使用數(shù)組代替。
列表的一般語(yǔ)法如下。
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
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
red green blue red green blue red green blue
追加項(xiàng)目到列表的語(yǔ)法如下。
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
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
orange blue red green
列表長(zhǎng)度的語(yǔ)法如下。
llength listName
例如,列表長(zhǎng)度如下例所示。
#!/usr/bin/tclsh set var {orange blue red green} puts [llength $var]
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
4
用于選擇在指定索引的列表項(xiàng)如下。
lindex listname index
例如,列表索引項(xiàng)目如下所示。
#!/usr/bin/tclsh set var {orange blue red green} puts [lindex $var 1]
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
blue
在列表特定索引插入項(xiàng)目的語(yǔ)法如下。
linsert listname index value1 value2..valuen
例如,在列表特定的索引插入項(xiàng)目如下。
#!/usr/bin/tclsh set var {orange blue red green} set var [linsert $var 3 black white] puts $var
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
orange blue red black white green
用于替換列表項(xiàng)以特定索引的語(yǔ)法如下。
lreplace listname firstindex lastindex value1 value2..valuen
例如用于替換列表項(xiàng)以特定的索引如下。
#!/usr/bin/tclsh set var {orange blue red green} set var [lreplace $var 2 3 black white] puts $var
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
orange blue black white
用于設(shè)置列表項(xiàng)在特定索引下面的語(yǔ)法給出。
lset listname index value
例如設(shè)置列表項(xiàng)的索引具體如下。
#!/usr/bin/tclsh set var {orange blue red green} lset var 0 black puts $var
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
black blue red green
復(fù)制值到變量的語(yǔ)法如下。
lassign listname variable1 variable2.. variablen
例如,用于將列表到變量如下。
#!/usr/bin/tclsh set var {orange blue red green} lassign $var colour1 colour2 puts $colour1 puts $colour2
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
orange blue
排序列表的語(yǔ)法如下。
lsort listname
進(jìn)行列表的排序如下例子。
#!/usr/bin/tclsh set var {orange blue red green} set var [lsort $var] puts $var
當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:
blue green orange red