Учебники

Tcl — Массивы

Массив — это систематическое расположение группы элементов с использованием индексов. Синтаксис для обычного массива показан ниже.

set ArrayName(Index) value

Пример для создания простого массива показан ниже.

Live Demo

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0)
puts $languages(1)

Когда приведенный выше код выполняется, он дает следующий результат —

Tcl
C Language

Размер массива

Синтаксис для вычисления размера массива показан ниже.

[array size variablename]

Пример для печати размера показан ниже.

Live Demo

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts  [array size languages]

Когда приведенный выше код выполняется, он дает следующий результат —

2

Итерация массива

Хотя индексы массива могут быть не непрерывными, как значения, указанные для индекса 1, затем индекса 10 и так далее. Но, если они непрерывны, мы можем использовать итерацию массива для доступа к элементам массива. Простая итерация массива для печати элементов массива показана ниже.

Live Demo

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 }  { $index < [array size languages] }  { incr index } {
   puts "languages($index) : $languages($index)"
}

Когда приведенный выше код выполняется, он дает следующий результат —

languages(0) : Tcl
languages(1) : C Language

Ассоциативные массивы

В Tcl все массивы по своей природе являются ассоциативными. Массивы хранятся и извлекаются без какого-либо определенного порядка. Ассоциативные массивы имеют индекс, который не обязательно является числом и может быть малонаселенным. Простой пример для ассоциативного массива с нечисловыми индексами показан ниже.

Live Demo

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts  $personA(Name)
puts  $personA(Age)

Когда приведенный выше код выполняется, он дает следующий результат —

Dave
14

Индексы массива

Синтаксис для получения индексов массива показан ниже.

[array names variablename]

Пример для печати размера показан ниже.

Live Demo

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]

Когда приведенный выше код выполняется, он дает следующий результат —

Age Name

Итерация ассоциативного массива

Вы можете использовать индексы массива для итерации по ассоциативному массиву. Пример показан ниже.

Live Demo

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
   puts "personA($index): $personA($index)"
}

Когда приведенный выше код выполняется, он дает следующий результат —