## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > array

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    array — 配列変数の操作 Manipulate array variables
  構文 SYNOPSIS
  説明 DESCRIPTION
    array anymore arrayName searchId
    array donesearch arrayName searchId
    array exists arrayName
    array get arrayName ?pattern?
    array names arrayName ?mode? ?pattern?
    array nextelement arrayName searchId
    array set arrayName list
    array size arrayName
    array startsearch arrayName
    array statistics arrayName
    array unset arrayName ?pattern?
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

array — 配列変数の操作 Manipulate array variables

### 構文 SYNOPSIS

array option arrayName ?arg arg ...?

### 説明 DESCRIPTION

この命令は､配列名 arrayName で与えられる変数に幾つかの操作を実施する｡特に指定しない限り､次の個別の命令に関しては､配列名 arrayName は実在する配列変数の名前でなければならない｡ 追加指定 option 引数は､その命令でどの様な動作が遂行されるのかを定める｡有効な 追加指定 options (省略形も使い得る)は次の通り: This command performs one of several operations on the variable given by arrayName. Unless otherwise specified for individual commands below, arrayName must be the name of an existing array variable. The option argument determines what action is carried out by the command. The legal options (which may be abbreviated) are:

array anymore arrayName searchId
  配列捜索中に､未だ処理すべき要素が残っていれば､1を､全ての要素が既に返却済であれば､0を返す｡ 捜索識別子 searchId は 配列名 arrayName 上のどの捜索を点検するのかを指し示すもので､それ以前に起動した array startsearch から戻ってきた値でなければならない｡この命令は､配列に空の名称の要素があるときに特に有用である､理由は､array nextelement から帰った値は､捜索が完了したか否かを指し示さないから｡ Returns 1 if there are any more elements left to be processed in an array search, 0 if all elements have already been returned. SearchId indicates which search on arrayName to check, and must have been the return value from a previous invocation of array startsearch. This option is particularly useful if an array has an element with an empty name, since the return value from array nextelement will not indicate whether the search has been completed.

array donesearch arrayName searchId
  この命令は配列の捜索を終らせ､その捜索に関わる全ての情報を廃棄する｡ 捜索識別子 searchId は 配列名 arrayName 上のどの捜索を破棄するのかを示すもので､それ以前に起動した array startsearch から戻ってきた値でなければならない｡空文字列を返す｡ This command terminates an array search and destroys all the state associated with that search. SearchId indicates which search on arrayName to destroy, and must have been the return value from a previous invocation of array startsearch. Returns an empty string.

array exists arrayName
  配列名 arrayName が配列変数であれば 1 を､その名前の変数が実在しないか､単純変数であれば､0 を返す｡ Returns 1 if arrayName is an array variable, 0 if there is no variable by that name or if it is a scalar variable.

array get arrayName ?pattern?
  要素の対を含むリストを返す｡それぞれの対の第1要素は 配列 arrayName の要素の名前で､それぞれの対の第２要素は配列要素の値である｡対の順序は定まっていない｡もし､模様 pattern が指定されていないと､結果には配列の全ての要素が含まれる｡もし､模様 pattern が指定されると､その名前が 模様 に合致(string match の合致則を使用)する要素のみが､含まれる｡もし､ 配列名 arrayName が配列変数でない場合､若しくは､配列に要素が全くない場合は､空リストが返される｡もし､配列の追跡がリストの要素を修正していると､array get を呼ぶ前と後の両方共に実在する要素が戻される｡ Returns a list containing pairs of elements. The first element in each pair is the name of an element in arrayName and the second element of each pair is the value of the array element. The order of the pairs is undefined. If pattern is not specified, then all of the elements of the array are included in the result. If pattern is specified, then only those elements whose names match pattern (using the matching rules of string match) are included. If arrayName is not the name of an array variable, or if the array contains no elements, then an empty list is returned. If traces on the array modify the list of elements, the elements returned are those that exist both before and after the call to array get.

array names arrayName ?mode? ?pattern?
  模様 pattern に合致する配列中の全ての要素の名前を含むリストを返す｡ 様式 mode は -exact [厳密法] か -glob [展開法] か -regexp [正規表現法] のどれか一つである｡ 様式 mode は､指定されると､配列要素の名前に対して 模様 pattern が合致する規則を定める｡ 様式 mode を指定しない場合の省略時設定は､-glob である｡ glob [展開法]様式の合致方法については､string match の文書を参照のこと｡又､regexp [正規表現法]の合致方法については､ regexp[正規表現] の文書を参照のこと｡もし 模様 pattern が省略されると､この命令は､配列中の全ての要素の名前を返す｡もし､配列内に(合致する)要素が実在しないか､配列名 arrayName が配列変数の名前でない場合は空文字列が返される｡ Returns a list containing the names of all of the elements in the array that match pattern. Mode may be one of -exact, -glob, or -regexp. If specified, mode designates which matching rules to use to match pattern against the names of the elements in the array. If not specified, mode defaults to -glob. See the documentation for string match for information on glob style matching, and the documentation for regexp for information on regexp matching. If pattern is omitted then the command returns all of the element names in the array. If there are no (matching) elements in the array, or if arrayName is not the name of an array variable, then an empty string is returned.

array nextelement arrayName searchId
  この捜索での､配列名 arrayName 内の次の要素の名前か､全ての配列名 arrayName の要素が返却済みの場合は空文字列を返す｡捜索識別子 searchId 引数は捜索を識別し､array startsearch 命令の戻り値でなければならない｡警告: もし､配列に要素が追加又は削除されると､array donesearch が起動されたかの如く､全ての捜索は､自動的に終了する; その結果､この様な捜査に対する array nextelement の操作は失敗する｡ Returns the name of the next element in arrayName, or an empty string if all elements of arrayName have already been returned in this search. The searchId argument identifies the search, and must have been the return value of an array startsearch command. Warning: if elements are added to or deleted from the array, then all searches are automatically terminated just as if array donesearch had been invoked; this will cause array nextelement operations to fail for those searches.

array set arrayName list
  配列 arrayName 内の一つ或は複数の要素の値を設定する｡リスト list は array get 命令の戻り値と同じ様な､偶数個の要素を含む形式でなければならない｡list の奇数番目の要素は配列 arrayName の中の要素名として､それに続く リスト list 中の要素はその配列要素に対応する新しい値として扱われる｡もし変数 arrayName が実在せず､且つ リスト list が空リストの場合は､配列 arrayName と謂う空の値の配列が作られる｡ Sets the values of one or more elements in arrayName. list must have a form like that returned by array get, consisting of an even number of elements. Each odd-numbered element in list is treated as an element name within arrayName, and the following element in list is used as a new value for that array element. If the variable arrayName does not already exist and list is empty, arrayName is created with an empty array value.

array size arrayName
  配列の要素の個数を表す十進数文字列を返す｡もし､配列名 arrayName が配列の名前でない場合は 0 が返る｡ Returns a decimal string giving the number of elements in the array. If arrayName is not the name of an array then 0 is returned.

array startsearch arrayName
  この命令は､ 配列名 arrayName として与えられた配列全てに渉る個々の要素一個づつの検索の初期化を実行して､譬えば､array nextelement 命令の起動等により､配列中の個別の要素の名前を返して来るようにする｡捜索が完了した時に､array donesearch 命令を起動するのが好ましい｡戻り値は､array nextelement と array donesearch 命令で使用する捜索識別子であり; これにより､同一配列に別々の捜索を同時に行うことが可能になる｡array get か array names のどちらかを foreach と一緒に使って､非常に大きい配列の全てを巡るのが､効率的で便利である｡これをどの様に行うかは､下の用例を参照のこと｡ This command initializes an element-by-element search through the array given by arrayName, such that invocations of the array nextelement command will return the names of the individual elements in the array. When the search has been completed, the array donesearch command should be invoked. The return value is a search identifier that must be used in array nextelement and array donesearch commands; it allows multiple searches to be underway simultaneously for the same array. It is currently more efficient and easier to use either the array get or array names, together with foreach, to iterate over all but very large arrays. See the examples below for how to do this.

array statistics arrayName
  配列を実現している連想記憶配列の中のデータの収納に関する統計情報を返す｡この情報には､連想記憶表の見出しの数､容器の数､容器の稼働率を含む｡ Returns statistics about the distribution of data within the hashtable that represents the array. This information includes the number of entries in the table, the number of buckets, and the utilization of the buckets.

array unset arrayName ?pattern?
  配列の中から､ 模様 pattern に合致(string match 法による合致則を使用)する要素を全て消去する｡ 配列名 arrayName が配列変数の名前でない場合も､配列中に合致する要素がない場合も不具合は生じない｡もし､模様 pattern が省略され､且つ､ 配列名 arrayName が配列変数の場合は､その配列全体を消去する｡この命令は常に空文字列を返す｡ Unsets all of the elements in the array that match pattern (using the matching rules of string match). If arrayName is not the name of an array variable or there are no matching elements in the array, no error will be raised. If pattern is omitted and arrayName is an array variable, then the command unsets the entire array. The command always returns an empty string.

### 用例 EXAMPLES

    array set colorcount {
        red   1
        green 5
        blue  4
        white 9
    }

    foreach {color count} [array get colorcount] {
        puts "Color: $color Count: $count"
    }
      → Color: blue Count: 4
        Color: white Count: 9
        Color: green Count: 5
        Color: red Count: 1

    foreach color [array names colorcount] {
        puts "Color: $color Count: $colorcount($color)"
    }
      → Color: blue Count: 4
        Color: white Count: 9
        Color: green Count: 5
        Color: red Count: 1

    foreach color [lsort [array names colorcount]] {
        puts "Color: $color Count: $colorcount($color)"
    }
      → Color: blue Count: 4
        Color: green Count: 5
        Color: red Count: 1
        Color: white Count: 9

    array statistics colorcount
      → 4 entries in table, 4 buckets
        number of buckets with 0 entries: 1
        number of buckets with 1 entries: 2
        number of buckets with 2 entries: 1
        number of buckets with 3 entries: 0
        number of buckets with 4 entries: 0
        number of buckets with 5 entries: 0
        number of buckets with 6 entries: 0
        number of buckets with 7 entries: 0
        number of buckets with 8 entries: 0
        number of buckets with 9 entries: 0
        number of buckets with 10 or more entries: 0
        average search distance for entry: 1.2

### SEE ALSO

list, string, variable, trace, foreach

### KEYWORDS

array, element names, search
Copyright © 1993-1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.