<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
  <head>
    <title>return</title>
  </head>

  <body>
    <h1>return</h1>

    <p>Команда осуществляет возврат из процедуры.</p>

    <h2>СИНТАКСИС</h2>

    <pre>
      <strong>return</strong> ?<strong>-code</strong> <em>code</em>? ?<strong>-errorinfo</strong> <em>info</em>? ?<strong>-errorcode</strong> <em>code</em>? ?<em>string</em>?
    </pre>
    
    <h2>ОПИСАНИЕ</h2> 

    <p>Команда немедленно осуществляет возврат из текущей процедуры
      (или команды верхнего уровня, или команды <strong><a
      href=source.html>source</a></strong>) со значением, заданным
      <em>string</em>. Если аргумент <em>string</em> не задан, возвращает
      пустую строку.</p>

    <p>Обычно опция <strong>-code</strong> не используется, и процедура
      завершается успешно (с кодом завершения TCL_OK). Однако, ее
      можно использовать для генерации других кодов возврата. Ниже
      перечислены возможные коды.</p>

    <dl>
      <dt><strong>ok</strong></dt>

      <dd>Успешное завершение. То же самое, что отсутствие кода.</dd>

      <dt><strong>error</strong></dt>

      <dd>Возвращает ошибку. То же самое, что использовать команду
        <strong><a href=error.html>error</a></strong> для прекращения
        выполнения процедуры за исключением обработки переменных <strong><a
        href=tclvars.html#errorInfo>errorInfo</a></strong> и <strong><a
        href=tclvars.html#errorCode>errorCode</a></strong>
        (см. ниже).</dd>
      
      <dt><strong>return</strong></dt>

      <dd>Текущая процедура вернет код TCL_RETURN, который вызовет
        немедленный возврат также и из вызывающей процедуры.</dd>
      
      <dt><strong>break</strong></dt>

      <dd>Текущая процедура вернет код TCL_BREAK, который вызовет
        немедленное прекращение выполнения самого внутреннего из
        вложенных циклов, из которого была вызвана процедура.</dd>

      <dt><strong>continue</strong></dt>

      <dd>Текущая процедура вернет код TCL_CONTINUE, который вызовет
        немедленное прекращение выполнения текущей итерации самого
        внутреннего из вложенных циклов, из которого была вызвана
        процедура.</dd>
      
      <dt><em>value</em></dt>

      <dd>Значение <em>value</em> должно быть целым числом. Оно будет
        возвращено как код выполнения процедуры.</dd>
    </dl>
    
      <p>Опция <strong>-code</strong> используется относительно редко. Она
      предусмотрена для того, чтобы процедуры, реализующие новые
      управляющие команды, могли вернуть вызывающим их процедурам
      исключительные условия.</p>

    <p>Опции <strong>-errorinfo</strong> и <strong>-errorcode</strong> могут
      использоваться совместно с <strong>code error</strong>, чтобы вернуть
      дополнительную информацию о сгенерированной ошибке. В остальных
      случаях они игнорируются.</p>

    <p>Опция <strong>-errorinfo</strong> используется для того, чтобы задать
      исходное значение переменной <strong><a href=
      tclvars.html#errorInfo>errorInfo</a></strong>. Если она не будет
      задана, то в переменную <strong><a
      href=tclvars.html#errorInfo>errorInfo</a></strong> будет включена
      информация о вызове процедуры, вернувшей ошибку, и о более
      высоких уровнях стека, но не информация непосредственно об
      ошибке внутри процедуры.  Чаще всего для формирования переменной
      <em>info</em> используется сообщение команды <strong><a
      href=catch.html#catch>catch</a></strong>, обнаружившей ошибку в
      процедуре.</p>

    <p>Если опция <strong>-errorcode</strong> указана, она позволяет задать
      значение переменной <strong><a href=tclvars.html#errorCode>
      errorCode</a></strong>. В противном случае ей будет присвоено
      значение <strong>NONE</strong>.</p>

  </body>
</html>