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

  <body>
    <h1>case</h1>

    <p> Команда <strong>case</strong> исполняет один из нескольких скриптов в
      зависимости от полученного значения. </p>
     
    <pre>
      <strong>case</strong> <em>string</em> ?<em>in</em>? <em>patList</em> <em>body</em> ?<em>patList</em> <em>body</em>...?
      <strong>case</strong> <em>string</em> ?<em>in</em>? {<em>patList</em> <em>body</em> ?<em>patList</em> <em>body</em>...?}
    </pre>

    <h2>ОПИСАНИЕ</h2> 

    <p> Замечание. Команда case - устаревшая, она поддерживается
      только для совместимости с предыдущими версиями. В последующих
      версиях она может быть опущена. Поэтому предпочтительнее
      использование команды <a
      href="switch.html"><strong>switch</strong></a>.
    </p>

    <p>Команда сравнивает <em>string</em> со всеми аргументами
      <em>patList</em> по очереди. Каждый аргумент <em>patList</em>
      представляет собой один или несколько (список) образцов. Если
      <em>string</em> соответствует одному из образцов, то <strong>case</strong>
      рекурсивно вызывает интерпретатор Tcl, передает ему следующий за
      этим списком образцов скрипт <em>body</em> для выполнения и
      возвращает результат этого выполнения. Каждый аргумент
      <em>patList</em> состоит из одного или нескольких образцов. Каждый
      образец может содержать спецсимволы, как в команде <a
      href="string.html#match"><strong>string match</strong></a>. Кроме
      того, есть специальный образец <strong>default</strong>. Соответствующий
      ему скрипт выполняется, если <em>string</em> не соответствует
      никакому другому образцу.</p>

    <p>Если <em>string</em> не соответствует ни одному из образцов, а
      образец <strong>default</strong> не используется, то <strong>case</strong> вернет
      пустую строку.</p>

    <p>У команды есть две формы записи для аргументов <em>patList</em> и
      <em>body</em>. Первая использует отдельные аргументы для каждого
      шаблона и команды. Эта форма более удобна, если в образцах или
      командах желательно выполнить какие-либо подстановки. Во второй
      форме все шаблоны и команды объединены в один аргумент, который
      должен быть списком, состоящим из шаблонов и команд. Вторая
      форма позволяет проще записывать многострочные команды,
      поскольку при этом фигурные скобки вокруг списка позволяют не
      ставить обратный слэш в конце каждой строки. Однако из-за этих
      фигурных скобок подстановки в шаблонах и командах не
      производятся. Поэтому одна и та же команда, записанная в
      различных формах, может работать по-разному.
    <//p>
  </body>
</html>