Команда string map . Данная комбинация используется, когда необходимо “закодировать” и затем “раскодировать” строку. Команда использует два обязательных и один необязательный аргумент. Обязательными аргументами являются совокупность пар «ключ-значение» и ссылка на преобразуемую строку. Необязательный аргумент должен находиться сразу же после имени строки и представляет собой опцию -nocase. Пары «ключ-значение» представляют собой заключенную в фигурные скобки последовательности заменяемых и заменяющих элементов. Следующий пример поясняет работу string map. Закодируем комбинацию букв «abctttabcttt».
string map { abc 1 ttt 2 } abctttabcttt
Списки. Списки в Тсlе используются в качестве коллекций, в которых можно хранить объекты различных типов, а также осуществлять перебор всех элементов. В отличие от других языков программирования, списки в Тсlе представляют собой просто строки, разделенные пробелами. В простейшем случае список представляет собой набор элементов, разделенных между собой пробелами.
Команды llength и lindex . Любой список может быть объявлен как обычная переменная, при помощи команды set. Для того чтобы проверить создание списка, можно воспользоваться командами llength и lindex. Команда llength, получая в качестве аргумента ссылку на список, возвращает число элементов списка. Аргументами команды lindex являются ссылка на список и индекс элемента, значение которого необходимо получить. Возвращаемым значением и является значение элемента с указанным индексом. На следующем примере покажем способ объявления списка. Обращаем Ваше внимание на то, что элементы списка также как и элементы строковой переменной начинаются с нулевого.
set spisok { a b {rty} a s d {t y {d f g} } v b n m }
a b {rty} a s d {t y {d f g} } v b n m
llength $spisok
lindex $spisok 2
R t y
lindex $spisok 6
t y { d f y }
Кроме команды set, списки также можно назначать командами concat и list. Рассмотрим работу этих команд на примере.
concat a b c { d e { f } } { g h }
a b c d e { f } g h
list a b c { d e { f } } { g h }
a b c { d e { f } } { g h }
Команда concat может иметь несколько необязательных аргументов. Если команда concat вызывается с аргументами, то она удаляет лидирующие и завершающие пробелы у каждого элемента, после чего объединяет элементы в единый список. Данная команда «теряет один уровень вложений», объединяя элементы списка между собой. Если же команда concat вызывается без аргументов, то результатом работы команды будет пустая строка. Команда list имеет те же аргументы, но в отличие от команды concat она при создании списков не теряет «вложений».
Команда linsert предназначена для вставки в список нового элемента или элементов. Ее аргументами являются ссылка на список, в который будут вставлены элементы, индекс элемента, перед которым будут вставлены новые элементы, и один или более новых элементов списка. В том случае, если в качестве ссылки на список команде передать несуществующую переменную, то эта переменная будет вставлена в созданную временную копию списка качестве первого аргумента. Примеры использования команды linsert приведены ниже.