Функции If и Switch

Применимо к: приложениям на основе холста столбцам формул Dataverse классическим потокам приложениям на основе модели интерфейсу командной строки Power Platform

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

Описание

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

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

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

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

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

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

Синтаксис

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) - обязательный аргумент. Формулы для проверки на значение true. Эти формулы обычно содержат операторы сравнения (такие как <, > и =) и функции проверки, например IsBlank и IsEmpty.
  • ThenResult(s) — обязательные аргументы. Значение, которое должна вернуть функция, если соответствующее условие окажется true.
  • DefaultResult — необязательный аргумент. Значение, которое должна вернуть функция, если ни одно из условий не имеет значение true. Если не указать этот аргумент, функция вернет пустое значение.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

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

Примеры

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

В следующих примерах элементу управления Slider (с именем Slider1) соответствует значение 25.

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

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

В этих примерах в элементе управления Text input с именем FirstName введено значение "Иван".

Формула Описание Результат
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 не выполняется. В качестве параметра DefaultResult была указана функция Back, поэтому она выполняется. true

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

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

Пошаговое руководство

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

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

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

    Элемент управления Label показывает Увеличьте заказ!, так как значение Text1 больше 20, но меньше 40.

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

    Элемент управления Label показывает Увеличьте заказ НАМНОГО!, так как значение Text1 меньше 20.

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

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