projman/hlp/ru/tcl/switch.html

118 lines
5.8 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>switch</title>
</head>
<body>
<h1>switch</h1>
<p>Команда выполняет один из нескольких скриптов в зависимости
от полученного значения.</p>
2015-10-19 13:27:31 +03:00
<h2>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<pre>
<strong>switch</strong> ?<em>options</em>? <em>string</em> <em>pattern</em> <em>body</em> ?<em>pattern</em> <em>body</em>...?
<strong>switch</strong> ?<em>options</em>? <em>string</em> {<em>pattern</em> <em>body</em> ?<em>pattern</em> <em>body</em>...?}
</pre>
<h2>ОПИСАНИЕ</h2>
2015-10-19 13:27:31 +03:00
<p>Команда <strong>switch</strong> сравнивает аргумент <em>string</em> по
очереди с каждым из образцов, заданных аргументами
<em>pattern</em>. Если строка <em>string</em> соответствует
очередному образцу, выполняется соответствующий скрипт
<em>body</em> и команда возвращает результат его выполнения. Если
последний из образцов равен <em>default</em>, то ему соответствует
любая строка. Если строка не соответствует ни одному из образцов
(что значит, в частности, что образец <em>default</em>
отсутствует), то никакой скрипт не выполняется и команда
возвращает пустое значение. </p>
2015-10-19 13:27:31 +03:00
<p>Если один или несколько первых аргументов команды начинаются с
<strong>-</strong>, они считаются опциями команды. Возможные опции
перечислены ниже.</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><strong>-exact</strong></dt>
<dd>Строка считается соответствующей образцу, только если она в точности
с ним совпадает. Этот режим используется по умолчанию.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>-glob</strong></dt>
<dd>При сравнении строки с образцом используются те же правила,
что и в команде <strong>string match</strong>.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>-regexp</strong><dt>
<dd>При сравнении строки с образцом используются те же правила,
что и в команде <a href=regexp.html><strong>regexp</strong></a>.</dd>
2015-10-19 13:27:31 +03:00
<dt><strong>--</strong></dt>
<dd>Обозначает конец опций. Следующий аргумент считается строкой
<em>string</em>, даже если он начинается с символа
2015-10-19 13:27:31 +03:00
<strong>-</strong>.</dd>
</dl>
<p>Команда предполагает использование одной из двух синтаксических
форм для задания образцов и скриптов. Первая использует
отдельные аргументы для каждого образца и скрипта. Эта форма
удобна при необходимости выполнить подстановки в образцах и/или
скриптах. Во второй форме все они помещаются в один аргумент,
который должен быть списком. Элементами этого списка должны
быть, соответственно, образцы и скрипты. Эта форма более удобна
для длинных команд, не размещающихся в одной строке, поскольку
она не требует использовать обратный слэш в конце каждой
строки. Но при ее использовании необходимо учитывать, что,
поскольку список содержится в фигурных скобках, подстановки
команд и переменных в образцах и скриптах не
производятся. Вследствие этого результат выполнения команды,
записанной в различных формах, может различаться.</p>
<p>Если один из аргументов <em>body</em> равен <strong>-</strong>, это
означает, что при совпадении строки с данным образцом будет
выполняться скрипт <em>body</em> для следующего образца. Если для
следующего образца скрипт также равен <strong>-</strong>, то будет
использован скрипт для следующего за ним образца и т.д.</p>
<p>Ниже приведены примеры использования команды
2015-10-19 13:27:31 +03:00
<strong>switch</strong>.</p>
<p>Команда</p>
2015-10-19 13:27:31 +03:00
<pre>
switch abc a - b {format 1} abc {format 2} default {format 3}
</pre>
<p>вернет значение 2.</p>
2015-10-19 13:27:31 +03:00
<p>Команда</p>
2015-10-19 13:27:31 +03:00
<pre>
switch -regexp aaab {
^a.*b$ -
b {format 1}
a* {format 2}
default {format 3}
}
</pre>
<p>вернет значение 1.</p>
2015-10-19 13:27:31 +03:00
<p>А команда</p>
2015-10-19 13:27:31 +03:00
<pre>
switch xyz {
a
-
b
{format 1}
a*
{format 2}
default
{format 3}
}
</pre>
<p>вернет значение 3.<p>
2015-10-19 13:27:31 +03:00
</body>
</html>