If

Материал из Egghelp.ru - TCL/TK Eggdrop Wiki
Версия от 12:32, 14 октября 2008; Deniska (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Команда if проверяет соблюдение условия в ходе выполнения скрипта.

СИНТАКСИС

if expr1 ?then? body1 elseif expr2 ?then? body2 elseif … ?else? ?bodyN?

ОПИСАНИЕ

Команда вычисляет значение выражения expr1 (точно так, как это делает команда expr). Это и все остальные выражения expr должны быть булева типа (то есть это должна быть числовая величина, причем 0 соответствует false, а все остальные значения – true, либо строка со значениями true или yes для true и false или no для false). Если выражение равно true, то скрипт body1 передается на выполнение интерпретатору Tcl. Если нет, то вычисляется значение выражения expr2, и если оно равно true, то исполняется body2, и так далее. Если ни одно из выражений не равно true, тогда выполняется bodyN.

Слова then и else необязательны и используются только для простоты понимания команды. Аргумент bodyN также может отсутствовать, если отсутствует else.

Команда возвращает значение выполненного скрипта или пустую строку, если ни одно из выражений не было равно true, и bodyN отсутствовал.

Пример

В данном примере переменная a содержит случайно сгенерированное значение - либо 0, либо 1. В случае, если rand вернул 1 - выражение верно, иначе - обрабатывается блок команд после оператора else.

 set a [rand 2]
 if { $a } {
   set res "Выпало значение 1"
 } else {
   set res "Выпало значение 2"
 }

В данном примере переменная a содержит число от 0 до 2. Если сгенерированное значение равно 0 выполняется операция 1, если 1 - операция 2, иначе - операция 3.

 set a [rand 3]
 if { $a == 0 } {
   #операция 1
 } elseif { $a == 1 } {
     #операция 2
   } else {
     #операция 3
   }
 }

В данном примере демонстрируется возможность записи проверяемого условия в несколько строк.

 set a [rand 2]
 set b [rand 2]
 if { $a ||
        $b 
 } then {
   #переменная a или b содержит 1
 } else {
   #ни переменная a, ни переменная b не содержат 1
 }

См. также

  • set - присвоение
  • rand - генерация случайного целого числа
  • TCL.tk - if