2 '\" Copyright (c) 1993-1994 The Regents of the University of California.
3 '\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
5 '\" See the file "license.terms" for information on usage and redistribution
6 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
8 .TH array n 8.3 Tcl "Tcl Built-In Commands"
9 .\" The -*- nroff -*- definitions below are for supplemental macros used
10 .\" in Tcl/Tk manual entries.
12 .\" .AP type name in/out ?indent?
13 .\" Start paragraph describing an argument to a library procedure.
14 .\" type is type of argument (int, etc.), in/out is either "in", "out",
15 .\" or "in/out" to describe whether procedure reads or modifies arg,
16 .\" and indent is equivalent to second arg of .IP (shouldn't ever be
17 .\" needed; use .AS below instead)
20 .\" Give maximum sizes of arguments for setting tab stops. Type and
21 .\" name are examples of largest possible arguments that will be passed
22 .\" to .AP later. If args are omitted, default tab stops are used.
25 .\" Start box enclosure. From here until next .BE, everything will be
26 .\" enclosed in one large box.
29 .\" End of box enclosure.
32 .\" Begin code excerpt.
37 .\" .VS ?version? ?br?
38 .\" Begin vertical sidebar, for use in marking newly-changed parts
39 .\" of man pages. The first argument is ignored and used for recording
40 .\" the version when the .VS was added, so that the sidebars can be
41 .\" found and removed when they reach a certain age. If another argument
42 .\" is present, then a line break is forced before starting the sidebar.
45 .\" End of vertical sidebar.
48 .\" Begin an indented unfilled display.
51 .\" End of indented unfilled display.
54 .\" Start of list of standard options for a Tk widget. The manpage
55 .\" argument defines where to look up the standard options; if
56 .\" omitted, defaults to "options". The options follow on successive
57 .\" lines, in three columns separated by tabs.
60 .\" End of list of standard options for a Tk widget.
62 .\" .OP cmdName dbName dbClass
63 .\" Start of description of a specific option. cmdName gives the
64 .\" option's name as specified in the class command, dbName gives
65 .\" the option's name in the option database, and dbClass gives
66 .\" the option's class in the option database.
69 .\" Print arg1 underlined, then print arg2 normally.
72 .\" Print arg1 in quotes, then arg2 normally (for trailing punctuation).
75 .\" Print an open parenthesis, arg1 in quotes, then arg2 normally
76 .\" (for trailing punctuation) and then a closing parenthesis.
78 .\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
82 .\" # Start an argument description
86 . ie !"\\$2"" .TP \\n()Cu
91 \&\\$1 \\fI\\$2\\fP (\\$3)
104 .\" # define tabbing values for .AP
107 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
110 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
111 .nr )C \\n()Bu+\\w'(in/out)'u+2n
113 .AS Tcl_Interp Tcl_CreateInterp in/out
114 .\" # BS - start boxed text
115 .\" # ^y = starting y location
123 .if n \l'\\n(.lu\(ul'
126 .\" # BE - end boxed text (draw box now)
131 .ie n \l'\\n(^lu\(ul'
133 .\" Draw four-sided box normally, but don't draw top of
134 .\" box if the box started on an earlier page.
136 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
139 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
146 .\" # VS - start vertical sidebar
147 .\" # ^Y = starting y location
148 .\" # ^v = 1 (for troff; for nroff this doesn't matter)
152 .ie n 'mc \s12\(br\s0
155 .\" # VE - end of vertical sidebar
163 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
170 .\" # Special macro to handle page bottom: finish off current
171 .\" # box/sidebar if in box/sidebar mode, then invoked standard
172 .\" # page bottom macro.
179 .\" Draw three-sided box if this is the box's first page,
180 .\" draw two sides but no top otherwise.
181 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
182 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
185 .nr ^x \\n(^tu+1v-\\n(^Yu
186 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
199 .\" # DS - begin display
205 .\" # DE - end display
211 .\" # SO - start of list of standard options
213 'ie '\\$1'' .ds So \\fBoptions\\fR
214 'el .ds So \\fB\\$1\\fR
215 .SH "STANDARD OPTIONS"
221 .\" # SE - end of list of standard options
226 See the \\*(So manual entry for details on the standard options.
228 .\" # OP - start of full description for a single option
233 Command-Line Name: \\fB\\$1\\fR
234 Database Name: \\fB\\$2\\fR
235 Database Class: \\fB\\$3\\fR
239 .\" # CS - begin code excerpt
245 .\" # CE - end code excerpt
250 .\" # UL - underline word
254 .\" # QW - apply quotation marks to word
256 .ie '\\*(lq'"' ``\\$1''\\$2
257 .\"" fix emacs highlighting
258 .el \\*(lq\\$1\\*(rq\\$2
260 .\" # PQ - apply parens and quotation marks to word
262 .ie '\\*(lq'"' (``\\$1''\\$2)\\$3
263 .\"" fix emacs highlighting
264 .el (\\*(lq\\$1\\*(rq\\$2)\\$3
266 .\" # QR - quoted range
268 .ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
269 .\"" fix emacs highlighting
270 .el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
272 .\" # MT - "empty" string
277 '\" Note: do not modify the .SH NAME line immediately below!
279 array \- Manipulate array variables
281 \fBarray \fIoption arrayName\fR ?\fIarg arg ...\fR?
285 This command performs one of several operations on the
286 variable given by \fIarrayName\fR.
287 Unless otherwise specified for individual commands below,
288 \fIarrayName\fR must be the name of an existing array variable.
289 The \fIoption\fR argument determines what action is carried
291 The legal \fIoptions\fR (which may be abbreviated) are:
293 \fBarray anymore \fIarrayName searchId\fR
294 Returns 1 if there are any more elements left to be processed
295 in an array search, 0 if all elements have already been
297 \fISearchId\fR indicates which search on \fIarrayName\fR to
298 check, and must have been the return value from a previous
299 invocation of \fBarray startsearch\fR.
300 This option is particularly useful if an array has an element
301 with an empty name, since the return value from
302 \fBarray nextelement\fR will not indicate whether the search
305 \fBarray donesearch \fIarrayName searchId\fR
306 This command terminates an array search and destroys all the
307 state associated with that search. \fISearchId\fR indicates
308 which search on \fIarrayName\fR to destroy, and must have
309 been the return value from a previous invocation of
310 \fBarray startsearch\fR. Returns an empty string.
312 \fBarray exists \fIarrayName\fR
313 Returns 1 if \fIarrayName\fR is an array variable, 0 if there
314 is no variable by that name or if it is a scalar variable.
316 \fBarray get \fIarrayName\fR ?\fIpattern\fR?
317 Returns a list containing pairs of elements. The first
318 element in each pair is the name of an element in \fIarrayName\fR
319 and the second element of each pair is the value of the
320 array element. The order of the pairs is undefined.
321 If \fIpattern\fR is not specified, then all of the elements of the
322 array are included in the result.
323 If \fIpattern\fR is specified, then only those elements whose names
324 match \fIpattern\fR (using the matching rules of
325 \fBstring match\fR) are included.
326 If \fIarrayName\fR is not the name of an array variable, or if
327 the array contains no elements, then an empty list is returned.
328 If traces on the array modify the list of elements, the elements
329 returned are those that exist both before and after the call to
332 \fBarray names \fIarrayName\fR ?\fImode\fR? ?\fIpattern\fR?
333 Returns a list containing the names of all of the elements in
334 the array that match \fIpattern\fR. \fIMode\fR may be one of
335 \fB\-exact\fR, \fB\-glob\fR, or \fB\-regexp\fR. If specified, \fImode\fR
336 designates which matching rules to use to match \fIpattern\fR against
337 the names of the elements in the array. If not specified, \fImode\fR
338 defaults to \fB\-glob\fR. See the documentation for \fBstring match\fR
339 for information on glob style matching, and the documentation for
340 \fBregexp\fR for information on regexp matching.
341 If \fIpattern\fR is omitted then the command returns all of
342 the element names in the array. If there are no (matching) elements
343 in the array, or if \fIarrayName\fR is not the name of an array
344 variable, then an empty string is returned.
346 \fBarray nextelement \fIarrayName searchId\fR
347 Returns the name of the next element in \fIarrayName\fR, or
348 an empty string if all elements of \fIarrayName\fR have
349 already been returned in this search. The \fIsearchId\fR
350 argument identifies the search, and must have
351 been the return value of an \fBarray startsearch\fR command.
352 Warning: if elements are added to or deleted from the array,
353 then all searches are automatically terminated just as if
354 \fBarray donesearch\fR had been invoked; this will cause
355 \fBarray nextelement\fR operations to fail for those searches.
357 \fBarray set \fIarrayName list\fR
358 Sets the values of one or more elements in \fIarrayName\fR.
359 \fIlist\fR must have a form like that returned by \fBarray get\fR,
360 consisting of an even number of elements.
361 Each odd-numbered element in \fIlist\fR is treated as an element
362 name within \fIarrayName\fR, and the following element in \fIlist\fR
363 is used as a new value for that array element.
364 If the variable \fIarrayName\fR does not already exist
365 and \fIlist\fR is empty,
366 \fIarrayName\fR is created with an empty array value.
368 \fBarray size \fIarrayName\fR
369 Returns a decimal string giving the number of elements in the
371 If \fIarrayName\fR is not the name of an array then 0 is returned.
373 \fBarray startsearch \fIarrayName\fR
374 This command initializes an element-by-element search through the
375 array given by \fIarrayName\fR, such that invocations of the
376 \fBarray nextelement\fR command will return the names of the
377 individual elements in the array.
378 When the search has been completed, the \fBarray donesearch\fR
379 command should be invoked.
380 The return value is a
381 search identifier that must be used in \fBarray nextelement\fR
382 and \fBarray donesearch\fR commands; it allows multiple
383 searches to be underway simultaneously for the same array.
384 It is currently more efficient and easier to use either the \fBarray
385 get\fR or \fBarray names\fR, together with \fBforeach\fR, to iterate
386 over all but very large arrays. See the examples below for how to do
389 \fBarray statistics \fIarrayName\fR
390 Returns statistics about the distribution of data within the hashtable
391 that represents the array. This information includes the number of
392 entries in the table, the number of buckets, and the utilization of
395 \fBarray unset \fIarrayName\fR ?\fIpattern\fR?
396 Unsets all of the elements in the array that match \fIpattern\fR (using the
397 matching rules of \fBstring match\fR). If \fIarrayName\fR is not the name
398 of an array variable or there are no matching elements in the array, no
399 error will be raised. If \fIpattern\fR is omitted and \fIarrayName\fR is
400 an array variable, then the command unsets the entire array.
401 The command always returns an empty string.
404 \fBarray set\fR colorcount {
411 foreach {color count} [\fBarray get\fR colorcount] {
412 puts "Color: $color Count: $count"
414 \fB\(->\fR Color: blue Count: 4
415 Color: white Count: 9
416 Color: green Count: 5
419 foreach color [\fBarray names\fR colorcount] {
420 puts "Color: $color Count: $colorcount($color)"
422 \fB\(->\fR Color: blue Count: 4
423 Color: white Count: 9
424 Color: green Count: 5
427 foreach color [lsort [\fBarray names\fR colorcount]] {
428 puts "Color: $color Count: $colorcount($color)"
430 \fB\(->\fR Color: blue Count: 4
431 Color: green Count: 5
433 Color: white Count: 9
435 \fBarray statistics\fR colorcount
436 \fB\(->\fR 4 entries in table, 4 buckets
437 number of buckets with 0 entries: 1
438 number of buckets with 1 entries: 2
439 number of buckets with 2 entries: 1
440 number of buckets with 3 entries: 0
441 number of buckets with 4 entries: 0
442 number of buckets with 5 entries: 0
443 number of buckets with 6 entries: 0
444 number of buckets with 7 entries: 0
445 number of buckets with 8 entries: 0
446 number of buckets with 9 entries: 0
447 number of buckets with 10 or more entries: 0
448 average search distance for entry: 1.2
451 list(n), string(n), variable(n), trace(n), foreach(n)
453 array, element names, search