Функции If и Switch
Применимо к: Приложениям Canvas Dataverse Столбцам формул Потокам рабочего стола Приложениям на основе моделей Power Pages Power Platform CLI
Функция If определяет, выполняется ли какое-либо условие в наборе (т. е. имеет значение true). Функция Switch определяет, совпадает или результат формулы с каким-либо значением в наборе. После чего эти функции возвращают результат или выполняют действие.
Описание
Функция If проверяет одно или несколько условий, пока не находит то, которое возвращает результат true. При обнаружении такого результата возвращается соответствующее значение. Если такой результат не обнаружен, возвращается значение по умолчанию. В любом случае возвращаемым значением может быть отображаемая строка, формула для вычисления или результат иного вида.
Функция Switch вычисляет формулу и определяет, совпадает ли результат с каким-либо значением в указанной последовательности. При обнаружении совпадающего значения возвращается соответствующее значение. Если совпадающее значение не обнаружено, возвращается значение по умолчанию. В любом случае возвращаемым значением может быть отображаемая строка, формула для вычисления или результат иного вида.
Если и Switch очень похожи, но вам следует использовать лучшую функцию для вашей ситуации:
- Используйте If для оценки отдельного условия. Наиболее распространенный синтаксис этой функции: If( Condition, ThenResult, DefaultResult ), который обеспечивает общий шаблон "if … then … else …" встречающийся в других инструментах программирования.
- Используйте If для оценки нескольких несвязанных условий. В Power Apps (в отличие от Microsoft Excel) можно указать несколько условий, без необходимости создавать вложенные формулы If.
- Используйте Switch для сопоставления отдельного условия с несколькими возможными значениями. В этом случае можно также использовать функцию If, но потребуется повторять формулу для каждого сопоставляемого значения.
Вы можете использовать обе эти функции в формулах поведения для ветвления между двумя или более действиями. Только одна ветвь активирует действие. Проверка условий и сопоставление значений выполняются по порядку, и они останавливаются, если условие принимает значение true или найдено совпадение.
Если ни одно из условий не истинно , совпадений не найдено и не указан результат по умолчанию, возвращается пустое значение.
Синтаксис
Если( Условие, ТогдаРезультат [, РезультатПоУмолчанию ] )
Если( Условие1, ТогдаРезультат1 [, Условие2, ТогдаРезультат2, ... [, РезультатПоУмолчанию ] ] )
- Условия - Обязательны. Формулы для проверки на значение true. Эти формулы обычно содержат операторы сравнения (такие как <, > и =) и функции проверки, например IsBlank и IsEmpty.
- ThenResults - Обязательно. Значение, которое должна вернуть функция, если соответствующее условие окажется true.
- DefaultResult - Необязательно. Значение, которое должна вернуть функция, если ни одно из условий не имеет значение true. Если не указать этот аргумент, функция вернет пустое значение.
Switch( Формула, Совпадение1, Результат1 [, Совпадение2, Результат2, ... [, РезультатпоУмолчанию ] ] )
- Формула - Обязательно. Формула для поиска совпадений. Эта формула вычисляется только один раз.
- Совпадения - Обязательно. Значения, сравниваемые с результатом вычисления формулы Formula. В случае точного совпадения функция возвращает соответствующий Result.
- Результаты - Обязательно. Соответствующее значение, которое возвращается при обнаружении точного совпадения.
- DefaultResult - Необязательно. Если точное совпадение не найдено, возвращается это значение. Если не указать этот аргумент, функция вернет пустое значение.
Примеры
Значения в формулах
В следующих примерах элементу управления Slider (с именем Slider1) соответствует значение 25.
Формула | Description | Result |
---|---|---|
Если( Ползунок1.Значение = 25, "Результат1" ) | Условие принимает значение true (истина), и функция возвращает соответствующий результат. | "Result1" |
Если( Ползунок1.Значение = 25, "Результат1", "Результат2" ) | Условие принимает значение true (истина), и функция возвращает соответствующий результат. | "Result1" |
Если( Ползунок1.Значение > 1000, "Результат1" ) | Условие имеет значение false, а DefaultResult не был указан. | пустой |
Если( Ползунок1.Значение > 1000, "Результат1", "Результат2" ) | Условие имеет значение false, DefaultResult был указан и возвращается. | "Result2" |
Если( Ползунок1.Значение = 25, "Результат1", Ползунок1.Значение > 0, "Результат2" ) | Первое условие принимает значение true (истина), и функция возвращает соответствующий результат. Второе условие также имеет значение true, но оно не вычисляется, так как находится в списке аргументов после условия, результатом которого является значение true. | "Result1" |
Если( IsBlank( Slider1.Value ), "Результат1", IsNumeric( Slider1.Value ), "Результат2" ) | Первое условие принимает значение false, так как ползунок имеет значение, которое не является пустым. Второе условие принимает значение true (истина), так как значение ползунка является числом, и функция возвращает соответствующий результат. | "Result2" |
Если( Ползунок1.Значение > 1000, "Результат1", Ползунок1.Значение > 50, "Результат2", "Результат3") | Первое и второе условия имеют значение false, DefaultResult был указан и возвращается. | "Result3" |
Переключатель( Ползунок1.Значение, 25, "Результат1" ) | Значение ползунка совпадает с первым проверяемым значением, после чего возвращается соответствующий результат. | "Result1" |
Переключатель( Ползунок1.Значение, 20, "Результат1", 25, "Результат2", 30, "Результат3" ) | Значение ползунка совпадает со вторым проверяемым значением, после чего возвращается соответствующий результат. | "Result2" |
Переключатель( Ползунок1. Значение, 20, "Результат1", 10, "Результат2", 0, "Результат3", "Результат по умолчанию" ) | Значение ползунка не соответствует какому-либо проверяемому значению. Был указан DefaultResult, поэтому возвращается он. | "DefaultResult" |
Ветвление в формулах поведения
В этих примерах в элементе управления Text input с именем FirstName введено значение "Иван".
Формула | Описание | Результат |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | Условие принимает значение true, поэтому выполняется функция Navigate. С помощью функции IsBlank можно проверить, заполнено ли обязательное поле формы. Если бы текстовое поле FirstName было пустым, то вычисление этой формулы не привело бы ни к никаким действиям. | истинный На дисплее появляется экран Screen1. |
Если (IsBlank(FirstName.Text), Navigate(Screen1, ScreenTransition.None), Back()) | Без оператора ! условие принимает значение false, поэтому функция Navigate не выполняется. В качестве параметра DefaultResult была указана функция Back, поэтому она выполняется. | истинный На дисплее появляется предыдущий экран. |
Switch(FirstName.Text, "Carlos", Navigate(Screen1, ScreenTransition.None), "Kirstin", Navigate(Screen2, ScreenTransition.None), "John", Navigate(Screen3, ScreenTransition.None) ) | Значение FirstName.Text сравнивается со значениями "Павел", "Кристина" и "Иван" в указанном порядке. Обнаружено совпадение со значением "Иван", поэтому приложение переходит к экрану Screen3. | истинный На дисплее появляется экран Screen3. |
Пошаговое руководство
Добавьте элемент управления Text input с именем Text1 (возможно, такое имя будет указано по умолчанию).
В поле Text1 введите 30.
Добавьте элемент управления Label и задайте в качестве значения свойства Text следующую формулу:
Если( Значение(Текст1. Текст) < 20, "Закажите МНОГО больше!", Значение(Текст1. Текст) < 40, "Закажите больше!", Текст1. Текст )Элемент управления Label показывает Увеличьте заказ!, так как значение Text1 больше 20, но меньше 40.
В поле Text1 введите 15.
Элемент управления Label показывает Увеличьте заказ НАМНОГО!, так как значение Text1 меньше 20.
В поле Text1 введите 50.
Теперь в элементе управления Label отображается значение, которое вы ввели, так как оно больше 40.