Операторы ветвления


Операторы этого типа позволяют выводить заданные части шаблона в зависимости от значения выражения, расположенного в их правой части. В СT++ второй версии есть три оператора ветвления: <TMPL_if ВЫРАЖЕНИЕ>, <TMPL_elsif ВЫРАЖЕНИЕ> и <TMPL_unless ВЫРАЖЕНИЕ>. Операторы <TMPL_if, <TMPL_elsif ВЫРАЖЕНИЕ> и <TMPL_unless вычисляют значение ВЫРАЖЕНИЯ и выполняют или не выполняют код, находящийся внутри них. Внутри операторов допустимо использование как переменных (локальных и глобальных), так и пользовательских функций.

Общий вид операторов ветвления следующий:
<TMPL_if ВЫРАЖЕНИЕ1>
    Код, выполняющийся, если ВЫРАЖЕНИЕ1 истинно.
<TMPL_elsif ВЫРАЖЕНИЕ2>
    Код, выполняющийся, если ВЫРАЖЕНИЕ2 истинно.
<TMPL_elsif ВЫРАЖЕНИЕ3>
    Код, выполняющийся, если ВЫРАЖЕНИЕ3 истинно.
    ......
<TMPL_else>
    Код, выполняющийся, ни одно из предыдущих условий не сработало.
</TMPL_if>

<TMPL_unless ВЫРАЖЕНИЕ1>
    Код, выполняющийся, если ВЫРАЖЕНИЕ1 ложно.
<TMPL_elsif ВЫРАЖЕНИЕ2>
    Код, выполняющийся, если ВЫРАЖЕНИЕ2 истинно.
<TMPL_elsif ВЫРАЖЕНИЕ3>
    Код, выполняющийся, если ВЫРАЖЕНИЕ2 истинно.
    ......
<TMPL_else>
    Код, выполняющийся, ни одно из предыдущих условий не сработало.
</TMPL_unless>


Ветки <TMPL_elsif> и <TMPL_else> являются необязательными, то есть допускается следующая запись: <TMPL_if ВЫРАЖЕНИЕ> Код </TMPL_if>. Таким образом, оператор <TMPL_unless отличается от оператора <TMPL_if тем, что выполняет код, если условие ложно. Пример 2.1:

Шаблон: "Hello, <b><TMPL_var username></b>!<TMPL_else>Не задано имя пользователя!</TMPL_if>
Параметр: username => "Vasya"
Результат: "Hello, Vasya!"


Пример 2.2:

Шаблон: "<TMPL_if username>Hello, <b><TMPL_var username>!<TMPL_else>Не задано имя пользователя!</TMPL_if>
Параметр: не задан.
Результат: "Не задано имя пользователя!"


Для второго варианта условного ветвления картина будет прямо противоположной:

Пример 2.3:

Шаблон: "<TMPL_unless username>Hello, <b><TMPL_var username></b>!<TMPL_else>Не задано имя пользователя!</TMPL_unless>
Параметр: "Vasya"
Результат: "Не задано имя пользователя!"



Copyright © 2003 - 2009 CTPP Dev. Team | http://ctpp.havoc.ru