Уроки Tcl
#08: Сравнение чисел - if |
Команда switch позволяет вам сравнивать строку с другими. Другая особенность компьютерных языков - возможность выбора одного из двух вариантов действий на основе сравнения чисел. Как и большинство языков, Tcl предоставляет такую возможность коммандой if.
Синтаксис комманды if следующий:
if условие1 ?then? команда1 elseif условие2 ?then? команда2 elseif ... ?else? командаN
Слова then и else не обязательны, вы можете писать их, если думаете, что они улучшат читаемость вашего кода, или пропускать, если вам так больше нравится.
Когда поступает команда if, интерпретатор Tcl вычисляет условие с помощью команды expr. Если результат - истина, то выполняется команда1. Если получилась ложь - проверяется слово после команды1. Если следующее слово elseif, тогда проверяется следующее условие, а если следующее слово else, тогда выполняется последняя команда.
Условие должно возвращать одно из следующих значений:
Ложь | Истина | |
---|---|---|
число | 0 | все остальные значения |
yes/no | no | yes |
true/false | false | true |
Если условие возвращает строку вида "yes", "no", "true" или "false", регистр букв не проверяется. "True", "FALSE", "YeS" или "nO" интерпретируются нормально.
Условие следующее за if может быть заключено в двойные кавычки или фигурные скобки. Если условие заключено в кавычки, то в фазе подстановки произойдёт замена, а затем при выполнении команды if выполнится ещё одна замена.
Так как условие в if выполняется так же, как и в команде expr, шестнадцатеричные строки вида 0xNN будут преобразованы в числовой эквивалент перед вычислением. Условие в if проверяется так же, как работает команда expr.
if {$i == 1} {puts "РАВНО"}
эквивалентно следующему:
if {[expr $i == 1]} {puts "РАВНО"}
Команда тоже может быть заключена в кавычки или скобки. Так как команда будет выполнена аналогично любой другой команде Tcl, то даже в фигурных скобках подстановка будет произведена. Однако помните, что открывающая скобка или кавычка должна быть на той же строчке, что и команда if.
Выполните пример. Попробуйте поменять значение x на 2.
set x 1; if {$x == 2} {puts "$x равно 2"} else {puts "$x не равно 2"} if {$x != 1} { puts "$x != 1 (не равно)" } else { puts "$x равно 1" } if $x==1 {puts "Получили 1"} ;# На тестовой строке будут проведены две фазы подстановки ;# Первая фаза заменит $y на x ;# При выполнении команды if, $x будет заменён на 1 set y x; if "$$y != 1" { puts "$$y != 1" } else { puts "$$y равно 1" } |
Горбачев "Yurez" Юрий |