projman/hlp/ru/tcl/case.html

61 lines
4.0 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
2015-10-19 13:27:31 +03:00
<html>
<head>
<title>case</title>
</head>
<body>
<h1>case</h1>
<p> Команда <strong>case</strong> исполняет один из нескольких скриптов в
зависимости от полученного значения. </p>
2015-10-19 13:27:31 +03:00
<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>
2015-10-19 13:27:31 +03:00
<p> Замечание. Команда case - устаревшая, она поддерживается
только для совместимости с предыдущими версиями. В последующих
версиях она может быть опущена. Поэтому предпочтительнее
использование команды <a
href=switch.html><strong>switch</strong></a>.
2015-10-19 13:27:31 +03:00
</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>. Первая использует отдельные аргументы для каждого
шаблона и команды. Эта форма более удобна, если в образцах или
командах желательно выполнить какие-либо подстановки. Во второй
форме все шаблоны и команды объединены в один аргумент, который
должен быть списком, состоящим из шаблонов и команд. Вторая
форма позволяет проще записывать многострочные команды,
поскольку при этом фигурные скобки вокруг списка позволяют не
ставить обратный слэш в конце каждой строки. Однако из-за этих
фигурных скобок подстановки в шаблонах и командах не
производятся. Поэтому одна и та же команда, записанная в
различных формах, может работать по-разному.
2015-10-19 13:27:31 +03:00
<//p>
</body>
</html>