# proc

Создает Tcl-процедуры.

## СИНТАКСИС

          proc name args body

## ОПИСАНИЕ

Команда proc создает новую Tcl-процедуру с именем name, если такой процедуры ранее не было, и замещает ранее существовавшую процедуру или команду с таким именем, если она была. При вызове новой процедуры скрипт body передается на выполнение Tcl-интерпретатору. Обычно имя процедуры указывается без указания имени пространства имен. При этом новая процедура создается в текущем пространстве имен. Однако, если пространство имен указано явно, она создается в указанном пространстве. Аргумент args определяет формальные аргументы процедуры и представляет собой список (возможно, пустой), каждый элемент которого представляет описание одного формального параметра. Каждое такое описание само является списком из одного или двух элементов. Первый элемент списка определяет имя формального параметра. Второй элемент списка, если он указан, определяет значение по умолчанию для данного параметра.

При выполнении процедуры для каждого формального параметра создается локальная переменная. Ей присваивается значение соответствующего аргумента, указанного при вызове процедуры, или значение по умолчанию. Аргумент, для которого при определении процедуры указано значение по умолчанию, может не присутствовать в вызове процедуры. Однако общее количество указанных параметров должно быть достаточным для аргументов, не имеющих значения по умолчанию, но не больше общего числа формальных параметров. Если это условие выполнено, все аргументы процедуры собираются в один список (как при исполнении команды list). Эта комбинированная величина присваивается локальной переменной args.

При исполнении тела процедуры имена переменных обычно считаются именами локальных переменных, которые создаются автоматически по мере необходимости и удаляются после завершения процедуры. По одной локальной переменной создается также для каждого аргумента процедуры. Для использования глобальных переменных необходимо использовать команду global или upvar. Для использования переменных из пространства имен необходимо использовать команду variable или upvar.

Команда proc возвращает пустую строку. При вызове процедуры возвращается величина, заданная в команде return. Если в процедуре не выполнялась явная команда return, она возвращает результат выполнения последней команды, выполнявшейся в теле процедуры. Если при выполнении процедуры произошла ошибка, то процедура в целом возвращает эту ошибку.