array.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:7k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993-1994 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: array.n,v 1.8.18.3 2004/10/27 14:23:41 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH array n 8.3 Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. array - Manipulate array variables
  16. .SH SYNOPSIS
  17. fBarray fIoption arrayNamefR ?fIarg arg ...fR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. This command performs one of several operations on the
  22. variable given by fIarrayNamefR.
  23. Unless otherwise specified for individual commands below,
  24. fIarrayNamefR must be the name of an existing array variable.
  25. The fIoptionfR argument determines what action is carried
  26. out by the command.
  27. The legal fIoptionsfR (which may be abbreviated) are:
  28. .TP
  29. fBarray anymore fIarrayName searchIdfR
  30. Returns 1 if there are any more elements left to be processed
  31. in an array search, 0 if all elements have already been
  32. returned.
  33. fISearchIdfR indicates which search on fIarrayNamefR to
  34. check, and must have been the return value from a previous
  35. invocation of fBarray startsearchfR.
  36. This option is particularly useful if an array has an element
  37. with an empty name, since the return value from
  38. fBarray nextelementfR won't indicate whether the search
  39. has been completed.
  40. .TP
  41. fBarray donesearch fIarrayName searchIdfR
  42. This command terminates an array search and destroys all the
  43. state associated with that search.  fISearchIdfR indicates
  44. which search on fIarrayNamefR to destroy, and must have
  45. been the return value from a previous invocation of
  46. fBarray startsearchfR.  Returns an empty string.
  47. .TP
  48. fBarray exists fIarrayNamefR
  49. Returns 1 if fIarrayNamefR is an array variable, 0 if there
  50. is no variable by that name or if it is a scalar variable.
  51. .TP
  52. fBarray get fIarrayNamefR ?fIpatternfR?
  53. Returns a list containing pairs of elements.  The first
  54. element in each pair is the name of an element in fIarrayNamefR
  55. and the second element of each pair is the value of the
  56. array element.  The order of the pairs is undefined.
  57. If fIpatternfR is not specified, then all of the elements of the
  58. array are included in the result.
  59. If fIpatternfR is specified, then only those elements whose names
  60. match fIpatternfR (using the matching rules of
  61. fBstring matchfR) are included.
  62. If fIarrayNamefR isn't the name of an array variable, or if
  63. the array contains no elements, then an empty list is returned.
  64. .TP
  65. fBarray names fIarrayNamefR ?fImodefR? ?fIpatternfR?
  66. Returns a list containing the names of all of the elements in
  67. the array that match fIpatternfR.  fIModefR may be one of
  68. fB-exactfR, fB-globfR, or fB-regexpfR.  If specified, fImodefR
  69. designates which matching rules to use to match fIpatternfR against
  70. the names of the elements in the array.  If not specified, fImodefR
  71. defaults to fB-globfR.  See the documentation for fBstring matchfR
  72. for information on glob style matching, and the documentation for
  73. fBregexpfR for information on regexp matching.
  74. If fIpatternfR is omitted then the command returns all of
  75. the element names in the array.  If there are no (matching) elements
  76. in the array, or if fIarrayNamefR isn't the name of an array
  77. variable, then an empty string is returned.
  78. .TP
  79. fBarray nextelement fIarrayName searchIdfR
  80. Returns the name of the next element in fIarrayNamefR, or
  81. an empty string if all elements of fIarrayNamefR have
  82. already been returned in this search.  The fIsearchIdfR
  83. argument identifies the search, and must have
  84. been the return value of an fBarray startsearchfR command.
  85. Warning:  if elements are added to or deleted from the array,
  86. then all searches are automatically terminated just as if
  87. fBarray donesearchfR had been invoked; this will cause
  88. fBarray nextelementfR operations to fail for those searches.
  89. .TP
  90. fBarray set fIarrayName listfR
  91. Sets the values of one or more elements in fIarrayNamefR.
  92. fIlistfR must have a form like that returned by fBarray getfR,
  93. consisting of an even number of elements.
  94. Each odd-numbered element in fIlistfR is treated as an element
  95. name within fIarrayNamefR, and the following element in fIlistfR
  96. is used as a new value for that array element.
  97. If the variable fIarrayNamefR does not already exist
  98. and fIlistfR is empty,
  99. fIarrayNamefR is created with an empty array value.
  100. .TP
  101. fBarray size fIarrayNamefR
  102. Returns a decimal string giving the number of elements in the
  103. array.
  104. If fIarrayNamefR isn't the name of an array then 0 is returned.
  105. .TP
  106. fBarray startsearch fIarrayNamefR
  107. This command initializes an element-by-element search through the
  108. array given by fIarrayNamefR, such that invocations of the
  109. fBarray nextelementfR command will return the names of the
  110. individual elements in the array.
  111. When the search has been completed, the fBarray donesearchfR
  112. command should be invoked.
  113. The return value is a
  114. search identifier that must be used in fBarray nextelementfR
  115. and fBarray donesearchfR commands; it allows multiple
  116. searches to be underway simultaneously for the same array.
  117. It is currently more efficient and easier to use either the fBarray
  118. getfR or fBarray namesfR, together with fBforeachfR, to iterate
  119. over all but very large arrays.  See the examples below for how to do
  120. this.
  121. .VS 8.4
  122. .TP
  123. fBarray statistics fIarrayNamefR
  124. Returns statistics about the distribution of data within the hashtable
  125. that represents the array.  This information includes the number of
  126. entries in the table, the number of buckets, and the utilization of
  127. the buckets.
  128. .VE 8.4
  129. .VS 8.3
  130. .TP
  131. fBarray unset fIarrayNamefR ?fIpatternfR?
  132. Unsets all of the elements in the array that match fIpatternfR (using the
  133. matching rules of fBstring matchfR).  If fIarrayNamefR isn't the name
  134. of an array variable or there are no matching elements in the array, no
  135. error will be raised.  If fIpatternfR is omitted and fIarrayNamefR is
  136. an array variable, then the command unsets the entire array.
  137. The command always returns an empty string.
  138. .VE 8.3
  139. .SH EXAMPLES
  140. .CS
  141. fBarray setfR colorcount {
  142.     red   1
  143.     green 5
  144.     blue  4
  145.     white 9
  146. }
  147. foreach {color count} [fBarray getfR colorcount] {
  148.    puts "Color: $color Count: $count" 
  149. }
  150.  => Color: blue Count: 4
  151.     Color: white Count: 9
  152.     Color: green Count: 5
  153.     Color: red Count: 1
  154. foreach color [fBarray namesfR colorcount] {
  155.    puts "Color: $color Count: $colorcount($color)" 
  156. }
  157.  => Color: blue Count: 4
  158.     Color: white Count: 9
  159.     Color: green Count: 5
  160.     Color: red Count: 1
  161. foreach color [lsort [array names colorcount]] {
  162.     puts "Color: $color Count: $colorcount($color)" 
  163. }
  164.  => Color: blue Count: 4
  165.     Color: green Count: 5
  166.     Color: red Count: 1
  167.     Color: white Count: 9
  168. fBarray statisticsfR colorcount
  169.  => 4 entries in table, 4 buckets
  170.     number of buckets with 0 entries: 1
  171.     number of buckets with 1 entries: 2
  172.     number of buckets with 2 entries: 1
  173.     number of buckets with 3 entries: 0
  174.     number of buckets with 4 entries: 0
  175.     number of buckets with 5 entries: 0
  176.     number of buckets with 6 entries: 0
  177.     number of buckets with 7 entries: 0
  178.     number of buckets with 8 entries: 0
  179.     number of buckets with 9 entries: 0
  180.     number of buckets with 10 or more entries: 0
  181.     average search distance for entry: 1.2
  182. .CE
  183. .SH "SEE ALSO"
  184. list(n), string(n), variable(n), trace(n), foreach(n)
  185. .SH KEYWORDS
  186. array, element names, search