2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>proc</title>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<h1>proc</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Создает Tcl-процедуры.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2>СИНТАКСИС</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<strong>proc</strong> <em>name</em> <em>args</em> <em>body</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2>ОПИСАНИЕ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда <strong>proc</strong> создает новую Tcl-процедуру с именем
|
|
|
|
|
<em>name</em>, если такой процедуры ранее не было, и замещает
|
|
|
|
|
ранее существовавшую процедуру или команду с таким именем, если
|
|
|
|
|
она была. При вызове новой процедуры скрипт <em>body</em>
|
|
|
|
|
передается на выполнение Tcl-интерпретатору. Обычно имя
|
|
|
|
|
процедуры указывается без указания имени пространства имен. При
|
|
|
|
|
этом новая процедура создается в текущем пространстве
|
|
|
|
|
имен. Однако, если пространство имен указано явно, она создается
|
|
|
|
|
в указанном пространстве. Аргумент <em>args</em> определяет
|
|
|
|
|
формальные аргументы процедуры и представляет собой список
|
|
|
|
|
(возможно, пустой), каждый элемент которого представляет
|
|
|
|
|
описание одного формального параметра. Каждое такое описание
|
|
|
|
|
само является списком из одного или двух элементов. Первый
|
|
|
|
|
элемент списка определяет имя формального параметра. Второй
|
|
|
|
|
элемент списка, если он указан, определяет значение по умолчанию
|
|
|
|
|
для данного параметра.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>При выполнении процедуры для каждого формального параметра
|
|
|
|
|
создается локальная переменная. Ей присваивается значение
|
|
|
|
|
соответствующего аргумента, указанного при вызове процедуры, или
|
|
|
|
|
значение по умолчанию. Аргумент, для которого при определении
|
|
|
|
|
процедуры указано значение по умолчанию, может не присутствовать
|
|
|
|
|
в вызове процедуры. Однако общее количество указанных параметров
|
|
|
|
|
должно быть достаточным для аргументов, не имеющих значения по
|
|
|
|
|
умолчанию, но не больше общего числа формальных параметров. Если
|
|
|
|
|
это условие выполнено, все аргументы процедуры собираются в один
|
|
|
|
|
список (как при исполнении команды <a
|
|
|
|
|
href=list.html><strong>list</strong></a>). Эта комбинированная величина
|
|
|
|
|
присваивается локальной переменной <em>args</em>.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>При исполнении тела процедуры имена переменных обычно считаются
|
|
|
|
|
именами локальных переменных, которые создаются автоматически по
|
|
|
|
|
мере необходимости и удаляются после завершения процедуры. По
|
|
|
|
|
одной локальной переменной создается также для каждого аргумента
|
|
|
|
|
процедуры. Для использования глобальных переменных необходимо
|
|
|
|
|
использовать команду <a href=global.html><strong>global</strong></a> или
|
|
|
|
|
<a href=upvar.html><strong>upvar</strong></a>. Для использования
|
|
|
|
|
переменных из пространства имен необходимо использовать команду
|
|
|
|
|
<a href= variable.html><strong>variable</strong></a> или
|
|
|
|
|
<a href=upvar.html><strong>upvar</strong></a>.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда <strong>proc</strong> возвращает пустую строку. При вызове
|
|
|
|
|
процедуры возвращается величина, заданная в команде <a href=
|
|
|
|
|
return.html><strong>return</strong></a>. Если в процедуре не выполнялась
|
|
|
|
|
явная команда <strong>return</strong>, она возвращает результат выполнения
|
|
|
|
|
последней команды, выполнявшейся в теле процедуры. Если при
|
|
|
|
|
выполнении процедуры произошла ошибка, то процедура в целом
|
|
|
|
|
возвращает эту ошибку.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|