Команда case исполняет один из нескольких скриптов в зависимости от полученного значения.
case string ?in? patList body ?patList body...? case string ?in? {patList body ?patList body...?}
Замечание. Команда case - устаревшая, она поддерживается только для совместимости с предыдущими версиями. В последующих версиях она может быть опущена. Поэтому предпочтительнее использование команды switch.
Команда сравнивает string со всеми аргументами patList по очереди. Каждый аргумент patList представляет собой один или несколько (список) образцов. Если string соответствует одному из образцов, то case рекурсивно вызывает интерпретатор Tcl, передает ему следующий за этим списком образцов скрипт body для выполнения и возвращает результат этого выполнения. Каждый аргумент patList состоит из одного или нескольких образцов. Каждый образец может содержать спецсимволы, как в команде string match. Кроме того, есть специальный образец default. Соответствующий ему скрипт выполняется, если string не соответствует никакому другому образцу.
Если string не соответствует ни одному из образцов, а образец default не используется, то case вернет пустую строку.
У команды есть две формы записи для аргументов patList и body. Первая использует отдельные аргументы для каждого шаблона и команды. Эта форма более удобна, если в образцах или командах желательно выполнить какие-либо подстановки. Во второй форме все шаблоны и команды объединены в один аргумент, который должен быть списком, состоящим из шаблонов и команд. Вторая форма позволяет проще записывать многострочные команды, поскольку при этом фигурные скобки вокруг списка позволяют не ставить обратный слэш в конце каждой строки. Однако из-за этих фигурных скобок подстановки в шаблонах и командах не производятся. Поэтому одна и та же команда, записанная в различных формах, может работать по-разному. /p>