. .
lset - 修改列表中的乙個元素
lsetvarname ?index...? newvalue
lset命令接收乙個varname參量,varname是乙個列表變數。命令可以接收0個或多個index,多個index可 以連續排列,也可以以列表形式出現。最終接收乙個新的值作為varname的乙個元素。如果沒有index,命令形式如下:
lset varname newvalue或
lset varname {} newvalue在這種情況下,newvalue取代變數varname的值。
當只有乙個索引,lset命令把varname當作乙個列表處理,指出了第index個元素的位置(0指列表的第一 個元素)。當解釋列表的時候,lset遵循tcl命令直譯器關於對花括號、引號和反斜槓的處理規則,但是 變數置換和命令置換並不會發生。命令構造乙個使用newvalue替換元素後的列表。這個新的列表儲存在變 量varname中,lset命令也會返回這個新的列表。
如果index是負數或者大於或者等於$varname元素的數目,就發生乙個錯誤。
每個單獨的index數值和命令string index相同,支援乙個index和多個index。
如果有額外的index變元,每個變元指定了子列表中的元素,允許指令碼去修改子列表裡的元素。命令:
lset a 1 2 newvalue或
lset a newvalue使用newvalue替代第乙個子列表中的第二個元素。
作為index變元必須是大於或者等於0的整數,而且必須小於相應的列表的長度,也就是說lset命令不能修改列表的大小,如果不符合上述要求則會報錯。
在以下的每個示例中,初始值x的值為:
set x [list [list a b c] [list d e f] [list g h i]]
→命令返回結果並且會修改x的值,如果出錯則不修改x的值。
lsetx
→ j k l
lsetx {}
→ j k l
lsetx 0 j
→ j
lsetx 2 j
→ j
lsetx end j
→ j
lsetx end-1 j
→ j
lsetx 2 1 j
→
lsetx j
→
lsetx j
→ list index out of range在以下的每個示例中,初始值x的值為:
set x [list [list [list a b] [list c d]] /
[list [list e f] [list g h]]]
→ } }命令返回結果並且會修改x的值,如果出錯則不修改x的值。
lsetx 1 1 0 j
→ } }
lsetx j
→ } }
tcl tk參考 列表操作list
list 建立乙個列表list?arg arg 這個命令返回乙個由所有的 arg組成的列表,如果不指定 arg則返回空。花括號和反斜槓也可以正確的加入到列表中,所以lindex命令可以釋放list命令的所有變元。eval命令可以去執行列表結果,arg1作為命令名稱,其它的 arg作為命令的變元。li...
tcl tk參考 列表操作lsearch
lsearch 在列表中尋找特定元素 lsearch?options?list pattern 這個命令尋找list中與pattern匹配的元素。如果匹配到了返回第一次找到這個元素的索引 除非指定了 all或 inline 如果沒有匹配到返回 1。可選變元指出了列表的元素怎樣去匹配pattern,可...
tcltk例項詳解 列表操作(二)
列表操作在指令碼中使用的頻率非常高,基本上每個指令碼都會涉及到其中的一些操作,在這裡對列表的命令進行例項解析,以加深對列表命令的理解,本文涉及的命令為llength lindex lrange lsearch和lassign。llengthlist 返回乙個列表的元素個數,非常簡單而又常用的命令。l...