1 | '\" |
---|
2 | '\" Copyright (c) 2001 by Kevin B. Kenny <kennykb@acm.org>. All rights reserved. |
---|
3 | '\" |
---|
4 | '\" See the file "license.terms" for information on usage and redistribution |
---|
5 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
---|
6 | '\" |
---|
7 | '\" RCS: @(#) $Id: lset.n,v 1.15 2008/03/26 09:59:22 dkf Exp $ |
---|
8 | '\" |
---|
9 | .so man.macros |
---|
10 | .TH lset n 8.4 Tcl "Tcl Built-In Commands" |
---|
11 | .BS |
---|
12 | '\" Note: do not modify the .SH NAME line immediately below! |
---|
13 | .SH NAME |
---|
14 | lset \- Change an element in a list |
---|
15 | .SH SYNOPSIS |
---|
16 | \fBlset \fIvarName ?index...? newValue\fR |
---|
17 | .BE |
---|
18 | .SH DESCRIPTION |
---|
19 | .PP |
---|
20 | The \fBlset\fR command accepts a parameter, \fIvarName\fR, which |
---|
21 | it interprets as the name of a variable containing a Tcl list. |
---|
22 | It also accepts zero or more \fIindices\fR into |
---|
23 | the list. The indices may be presented either consecutively on the |
---|
24 | command line, or grouped in a |
---|
25 | Tcl list and presented as a single argument. |
---|
26 | Finally, it accepts a new value for an element of \fIvarName\fR. |
---|
27 | .PP |
---|
28 | If no indices are presented, the command takes the form: |
---|
29 | .CS |
---|
30 | lset varName newValue |
---|
31 | .CE |
---|
32 | or |
---|
33 | .CS |
---|
34 | lset varName {} newValue |
---|
35 | .CE |
---|
36 | In this case, \fInewValue\fR replaces the old value of the variable |
---|
37 | \fIvarName\fR. |
---|
38 | .PP |
---|
39 | When presented with a single index, the \fBlset\fR command |
---|
40 | treats the content of the \fIvarName\fR variable as a Tcl list. |
---|
41 | It addresses the \fIindex\fR'th element in it |
---|
42 | (0 refers to the first element of the list). |
---|
43 | When interpreting the list, \fBlset\fR observes the same rules |
---|
44 | concerning braces and quotes and backslashes as the Tcl command |
---|
45 | interpreter; however, variable |
---|
46 | substitution and command substitution do not occur. |
---|
47 | The command constructs a new list in which the designated element is |
---|
48 | replaced with \fInewValue\fR. This new list is stored in the |
---|
49 | variable \fIvarName\fR, and is also the return value from the \fBlset\fR |
---|
50 | command. |
---|
51 | .PP |
---|
52 | If \fIindex\fR is negative or greater than or equal to the number |
---|
53 | of elements in \fI$varName\fR, then an error occurs. |
---|
54 | .PP |
---|
55 | .VS 8.5 |
---|
56 | The interpretation of each simple \fIindex\fR value is the same as |
---|
57 | for the command \fBstring index\fR, supporting simple index |
---|
58 | arithmetic and indices relative to the end of the list. |
---|
59 | .VE 8.5 |
---|
60 | .PP |
---|
61 | If additional \fIindex\fR arguments are supplied, then each argument is |
---|
62 | used in turn to address an element within a sublist designated |
---|
63 | by the previous indexing operation, |
---|
64 | allowing the script to alter elements in sublists. The command, |
---|
65 | .CS |
---|
66 | lset a 1 2 newValue |
---|
67 | .CE |
---|
68 | or |
---|
69 | .CS |
---|
70 | lset a {1 2} newValue |
---|
71 | .CE |
---|
72 | replaces element 2 of sublist 1 with \fInewValue\fR. |
---|
73 | .PP |
---|
74 | The integer appearing in each \fIindex\fR argument must be greater |
---|
75 | than or equal to zero. The integer appearing in each \fIindex\fR |
---|
76 | argument must be strictly less than the length of the corresponding |
---|
77 | list. In other words, the \fBlset\fR command cannot change the size |
---|
78 | of a list. If an index is outside the permitted range, an error is reported. |
---|
79 | .SH EXAMPLES |
---|
80 | In each of these examples, the initial value of \fIx\fR is: |
---|
81 | .CS |
---|
82 | set x [list [list a b c] [list d e f] [list g h i]] |
---|
83 | \fI\(-> {a b c} {d e f} {g h i}\fR |
---|
84 | .CE |
---|
85 | The indicated return value also becomes the new value of \fIx\fR |
---|
86 | (except in the last case, which is an error which leaves the value of |
---|
87 | \fIx\fR unchanged.) |
---|
88 | .CS |
---|
89 | \fBlset\fR x {j k l} |
---|
90 | \fI\(-> j k l\fR |
---|
91 | \fBlset\fR x {} {j k l} |
---|
92 | \fI\(-> j k l\fR |
---|
93 | \fBlset\fR x 0 j |
---|
94 | \fI\(-> j {d e f} {g h i}\fR |
---|
95 | \fBlset\fR x 2 j |
---|
96 | \fI\(-> {a b c} {d e f} j\fR |
---|
97 | \fBlset\fR x end j |
---|
98 | \fI\(-> {a b c} {d e f} j\fR |
---|
99 | \fBlset\fR x end-1 j |
---|
100 | \fI\(-> {a b c} j {g h i}\fR |
---|
101 | \fBlset\fR x 2 1 j |
---|
102 | \fI\(-> {a b c} {d e f} {g j i}\fR |
---|
103 | \fBlset\fR x {2 1} j |
---|
104 | \fI\(-> {a b c} {d e f} {g j i}\fR |
---|
105 | \fBlset\fR x {2 3} j |
---|
106 | \fI\(-> list index out of range\fR |
---|
107 | .CE |
---|
108 | In the following examples, the initial value of \fIx\fR is: |
---|
109 | .CS |
---|
110 | set x [list [list [list a b] [list c d]] \e |
---|
111 | [list [list e f] [list g h]]] |
---|
112 | \fI\(-> {{a b} {c d}} {{e f} {g h}}\fR |
---|
113 | .CE |
---|
114 | The indicated return value also becomes the new value of \fIx\fR. |
---|
115 | .CS |
---|
116 | \fBlset\fR x 1 1 0 j |
---|
117 | \fI\(-> {{a b} {c d}} {{e f} {j h}}\fR |
---|
118 | \fBlset\fR x {1 1 0} j |
---|
119 | \fI\(-> {{a b} {c d}} {{e f} {j h}}\fR |
---|
120 | .CE |
---|
121 | .SH "SEE ALSO" |
---|
122 | list(n), lappend(n), lindex(n), linsert(n), llength(n), lsearch(n), |
---|
123 | lsort(n), lrange(n), lreplace(n), |
---|
124 | .VS 8.5 |
---|
125 | string(n) |
---|
126 | .VE |
---|
127 | |
---|
128 | |
---|
129 | .SH KEYWORDS |
---|
130 | element, index, list, replace, set |
---|