Функция If определяет, выполняется ли какое-либо условие в наборе (т. е. имеет значение true). Функция Switch определяет, совпадает или результат формулы с каким-либо значением в наборе. После чего эти функции возвращают результат или выполняют действие.

Описание

Функция If проверяет одно или несколько условий, пока не находит то, которое возвращает результат true. При обнаружении такого результата возвращается соответствующее значение. Если такой результат не обнаружен, возвращается значение по умолчанию. В любом случае возвращаемым значением может быть отображаемая строка, формула для вычисления или результат иного вида.

Функция Switch вычисляет формулу и определяет, совпадает ли результат с каким-либо значением в указанной последовательности. При обнаружении совпадающего значения возвращается соответствующее значение. Если совпадающее значение не обнаружено, возвращается значение по умолчанию. В любом случае возвращаемым значением может быть отображаемая строка, формула для вычисления или результат иного вида.

Функции If и Switch очень похожи, но в конкретной ситуации следует использовать наиболее подходящую для нее функцию.

  • Используйте If для оценки отдельного условия. Наиболее распространенный синтаксис этой функции: If( условие, то_результат , результат_по_умолчанию ), который обеспечивает общий шаблон "if… then… else…", встречающийся в других инструментах программирования.
  • Используйте If для оценки нескольких несвязанных условий. В PowerApps (в отличие от Microsoft Excel) можно указать несколько условий, без необходимости создавать вложенные формулы If.
  • Используйте Switch для сопоставления отдельного условия с несколькими возможными значениями. В этом случае можно также использовать функцию If, но потребуется повторять формулу для каждого сопоставляемого значения.

Вы можете использовать обе эти функции в формулах поведения для ветвления между двумя или более действиями. Только одна ветвь активирует действие. Проверка условий и сопоставление значений выполняются по порядку, и они останавливаются, если условие принимает значение true или найдено совпадение.

Если ни одно из условий не имеет значение true, совпадения не найдены и не указано значение по умолчанию, то возвращается пустое значение.

Синтаксис

If( условие, то_результат [, результат_по_умолчанию ] )
If( условие1, то_результат1 [, условие2, то_результат2 , … [ , результат_по_умолчанию ] ] )

  • *условие(_n)* — обязательный аргумент. Вычисляемые формулы, результатом которых должно быть значение true. Эти формулы обычно содержат операторы сравнения (такие как <, > и =) и функции проверки, например IsBlank и IsEmpty.
  • Аргументы *то_результат* являются обязательными. Значение, которое должна вернуть функция, если соответствующее условие окажется истинным.
  • Аргумент результат_по_умолчанию является необязательным. Значение, которое должна вернуть функция, если ни одно из условий не имеет значение true. Если не указать этот аргумент, функция вернет пустое значение.

Switch( формула, значение1, результат1 [, значение2, результат2, … [, результат_по_умолчанию ] ] )

  • *Formula* — обязательный аргумент. Формула для поиска совпадений. Эта формула вычисляется только один раз.
  • Аргументы значение* являются обязательными. Значения, сравниваемые с результатом *формулы. В случае точного совпадения функция возвращает соответствующий результат.
  • *результат(_n)* — обязательный аргумент. Соответствующее значение, которое возвращается при обнаружении точного совпадения.
  • Аргумент результат_по_умолчанию является необязательным. Если точное совпадение не найдено, возвращается это значение. Если не указать этот аргумент, функция вернет пустое значение.

Примеры

Значения в формулах

В следующих примерах ползунку Slider1 соответствует значение 25.

Формула Описание Возвращаемый результат
If(Slider1.Value = 25, "Результат1") Условие принимает значение true (истина), и функция возвращает соответствующий результат. "Результат1"
If(Slider1.Value = 25, "Результат1", "Результат2") Условие принимает значение true (истина), и функция возвращает соответствующий результат. "Результат1"
If(Slider1.Value > 1000, "Результат1") Условие имеет значение false, а результат_по_умолчанию не был указан. пустое значение
If(Slider1.Value > 1000, "Результат1", "Результат2") Условие имеет значение false, результат_по_умолчанию был указан и возвращается. "Результат2"
If(Slider1.Value = 25, "Результат1", Slider1.Value > 0, "Результат2") Первое условие принимает значение true (истина), и функция возвращает соответствующий результат. Второе условие также имеет значение true, но оно не вычисляется, так как находится в списке аргументов после условия, результатом которого является значение true. "Результат1"
If(IsBlank( Slider1.Value ), "Результат1", IsNumeric( Slider1.Value ), "Результат2") Первое условие принимает значение false, так как ползунок имеет значение, которое не является пустым. Второе условие принимает значение true (истина), так как значение ползунка является числом, и функция возвращает соответствующий результат. "Результат2"
If(Slider1.Value > 1000, "Результат1", Slider1.Value > 50, "Результат2", "Результат3") Первое и второе условия имеют значение false, результат_по_умолчанию был указан и возвращается. "Результат3"
Switch( Slider1.Value, 25, "Результат1" ) Значение ползунка совпадает с первым проверяемым значением, после чего возвращается соответствующий результат. "Результат1"
Switch( Slider1.Value, 20, "Результат1", 25, "Результат2", 30, "Результат3" ) Значение ползунка совпадает со вторым проверяемым значением, после чего возвращается соответствующий результат. "Результат2"
Switch( Slider1.Value, 20, "Результат1", 10, "Результат2", 0, "Результат3", "Результат_по_умолчанию" ) Значение ползунка не соответствует какому-либо проверяемому значению. Был указан результат_по_умолчанию, поэтому возвращается он. "Результат_по_умолчанию"

Ветвление в формулах поведения

В этих примерах в элементе управления Текстовое поле с именем FirstName введено значение John.

Формула Описание Возвращаемый результат
If(! IsBlank(FirstName.Text), Navigate( Screen1, ScreenTransition.None)) Условие принимает значение true, поэтому выполняется функция Navigate. С помощью функции IsBlank можно проверить, заполнено ли обязательное поле формы. Если бы текстовое поле FirstName было пустым, то вычисление этой формулы не привело бы ни к никаким действиям. true

На дисплее появляется экран Screen1.
If(IsBlank(FirstName.Text), Navigate( Screen1, ScreenTransition.None), Back()) Без оператора ! условие принимает значение false, поэтому функция Navigate не выполняется. В качестве параметра результат_по_умолчанию была указана функция Back, поэтому она возвращается. true

На дисплее появляется предыдущий экран.
Switch( FirstName.Text, "Николай", Navigate( Screen1, ScreenTransition.None ), "Кристина", Navigate( Screen2, ScreenTransition.None ), "Иван", Navigate( Screen3, ScreenTransition.None ) ) Значение FirstName.Text сравнивается со значениями "Николай", "Кристина" и "Иван" в указанном порядке. Обнаружено совпадение со значением "Иван", поэтому приложение переходит к экрану Screen3. true

На дисплее появляется экран Screen3.

Шаг за шагом

  1. Добавьте элемент управления Текстовое поле с именем Text1 (возможно, такое имя будет указано по умолчанию).

  2. В поле Text1 введите 30.

  3. Добавьте элемент управления Метка и задайте в качестве значения свойства Text следующую формулу:
    If(Value(Text1.Text) < 20, "Увеличьте заказ НАМНОГО!", Value(Text1.Text) < 40, "Увеличьте заказ!", Text1.Text)

    В элементе управления Метка отображается текст Увеличьте заказ!, так как значение Text1 больше 20, но меньше 40.

  4. В поле Text1 введите 15.

    В элементе управления Метка отображается текст Увеличьте заказ НАМНОГО!, так как значение Text1 меньше 20.

  5. В поле Text1 введите 50.

    Теперь в элементе управления Метка отображается значение, которое вы ввели, так как оно больше 40.