If2

From SunFlurry wiki
Revision as of 19:06, 27 December 2025 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  __If, ?? (Логические функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Магическая функция или конструкция
Обращение к БД:Нет
Визуальность:Нет

Магическая функция позволяет превратить несколько последовательных конструкций If в вычисляемое выражение. Функция используется для улучшения читаемости текстов и облегчения программирования. Однако, использование большого количества вложенных условий с помощью этой функции, может дать обратный эффект усложнения читаемости текстов. См. также _If в общем описании и упрощенный вариант _If.

Синтаксис

__If(<Условие>,<Результат, если условие выполнено>,<Условие 2>,<Результат, если условие 2 выполнено>,...<Результат, если не выполнено ни одно из условий>=<NOTHING>):<Результат>

Аргументы

  • <Условие X> - Логические выражения, условия которых проверяются.
  • <Результат, если условие X выполнено> - Вычисляемые выражения, значения которых возвращается функцией, если соответствующее им условие выполнено
  • <Результат, если не выполнено ни одно из условий> - (необязательный аргумент) Вычисляемое выражение, значение которого возвращается функцией, если ни одно из условий не выполнено, если выражение не задано и условия не выполняются, функция возвращает пустое значение.

Возвращаемое значение

Возвращает значение одного из вычисляемых выражений или пустое значение.

Примеры

Randomize;
a:=Random(10);
b:=Random(10);
c:=Random(10);

//Конструкция с __If
Message(??((a>b)And(a>c),"a большее из трех",(b>a)And(b>c),"b большее из трех",(c>a)And(c>b),"c большее из трех","значения по крайней мере двух из переменных равны"));

//Конструкция с If
If (a>b)And(a>c) Then
  Message("a большее из трех");
ElseIf (b>a)And(b>c) Then
  Message("b большее из трех");
ElseIf (c>a)And(c>b) Then
  Message("c большее из трех");
Else
  Message("значения по крайней мере двух из переменных равны");
EndIf;

//Обе представленные конструкции имеют одинаковую функцию, при этом первая проще.