array
-
ИМЯ
- array — Управление переменными массива
- СИНТАКСИС
- ОПИСАНИЕ
-
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?
- array donesearch arrayName searchId
- ПРИМЕРЫ
- СМОТРИТЕ ТАКЖЕ
- КЛЮЧЕВЫЕ СЛОВА
Имя
array — Управление переменными массиваСинтаксис
array option arrayName ?arg arg ...?Описание
Эта команда выполняет одно из нескольких действий над переменной, заданной arrayName. Если не указано иное для отдельных команд ниже, arrayName должно быть именем существующей переменной массива. Аргумент option определяет действие, выполняемое командой. Допустимые option (их можно сокращать) следующие:- array anymore arrayName searchId
- Возвращает 1, если в поиске массива остались еще элементы, и 0, если все элементы уже были возвращены. searchId указывает, какой поиск массива arrayName необходимо проверить и должен быть значением, возвращенным предыдущим вызовом array startsearch. Эта опция особенно полезна, если массив содержит элемент с пустым именем, так как возвращаемое значение array nextelement не укажет, завершен ли поиск.
- array donesearch arrayName searchId
- Эта команда завершает поиск массива и удаляет весь связанный с ним состояние. SearchId указывает, какой поиск массива arrayName необходимо уничтожить, и должен быть значением, возвращенным предыдущим вызовом array startsearch. Возвращает пустую строку.
- array exists arrayName
- Возвращает 1, если arrayName является переменной массива, и 0, если нет переменной с таким именем или это скалярная переменная.
- array get arrayName ?pattern?
- Возвращает список, содержащий пары элементов. Первый элемент каждой пары — имя элемента в arrayName, а второй — значение элемента массива. Порядок пар не определен. Если pattern не указан, то все элементы массива включаются в результат. Если pattern указан, то включаются только те элементы, имена которых соответствуют pattern (используя правила сопоставления string match). Если arrayName не является именем переменной массива или массив не содержит элементов, возвращается пустой список. Если отслеживание массива изменяет список элементов, возвращаемые элементы — это те, которые существуют как до, так и после вызова array get.
- array names arrayName ?mode? ?pattern?
- Возвращает список, содержащий имена всех элементов в массиве, которые соответствуют pattern. Mode может быть -exact, -glob или -regexp. Если указан, mode определяет правила соответствия для сопоставления pattern с именами элементов массива. Если не указан, mode по умолчанию -glob. См. документацию для string match для получения информации о сопоставлении по шаблонам, и документацию для regexp для получения информации о сопоставлении по регулярным выражениям. Если pattern опущен, команда возвращает все имена элементов в массиве. Если в массиве нет (соответствующих) элементов или arrayName не является именем переменной массива, возвращается пустая строка.
- array nextelement arrayName searchId
- Возвращает имя следующего элемента в arrayName или пустую строку, если все элементы arrayName уже были возвращены в этом поиске. Аргумент searchId идентифицирует поиск, и он должен быть значением, возвращенным командой array startsearch. Предупреждение: если элементы добавляются или удаляются из массива, все поиски автоматически завершаются так, как если бы была вызвана команда array donesearch; это приведет к ошибкам в операциях array nextelement для этих поисков.
- array set arrayName list
- Устанавливает значения одного или нескольких элементов в arrayName. list должен иметь форму, аналогичную той, которая возвращается командой array get, состоящую из четного количества элементов. Каждый элемент с нечетным номером в list рассматривается как имя элемента в arrayName, а следующий элемент в list используется в качестве нового значения для этого элемента массива. Если переменная arrayName еще не существует и list пустой, arrayName создается со значением пустого массива.
- array size arrayName
- Возвращает строку, содержащую количество элементов в массиве. Если arrayName не является именем массива, то возвращается 0.
- array startsearch arrayName
- Эта команда инициализирует элементный поиск в массиве, заданном arrayName, таким образом, что вызовы команды array nextelement будут возвращать имена отдельных элементов в массиве. Когда поиск завершен, следует вызвать команду array donesearch. Возвращаемое значение — идентификатор поиска, который должен использоваться в командах array nextelement и array donesearch; он позволяет одновременно выполнять несколько поисков для одного массива. В настоящее время для итерации по всем, кроме очень больших массивов, эффективнее и проще использовать array get или array names вместе с foreach. См. примеры ниже, как это сделать.
- array statistics arrayName
- Возвращает статистику о распределении данных в хеш-таблице, которая представляет массив. Эта информация включает количество записей в таблице, количество бакетов и использование бакетов.
- array unset arrayName ?pattern?
- Удаляет все элементы в массиве, которые соответствуют pattern (используя правила сопоставления string match). Если arrayName не является именем переменной массива или в массиве нет совпадающих элементов, ошибка не будет поднята. Если pattern опущен, и arrayName является переменной массива, то команда удаляет весь массив. Команда всегда возвращает пустую строку.
Примеры
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 См. также
list, string, variable, trace, foreach
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/array.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/array.htm