Условная функция, которая возвращает одно из двух значений.
Синтаксис
IIf ( condition, expr_if_true, expr_if_false )
Параметры
condition
Проверяемое условие.
Ненулевое значение вычисляется как true, в то время как нулевое
значение выражение оценивается как false.
expr_if_true
Выражение для оценки и возвратить, если condition
является true.
Он должен возвращать:
- числовое значение, которое может быть целое число, число
с плавающей запятой или указатель,
- или строковое значение,
- или значение UDT.
expr_if_false
Выражение для оценки и возвратить, если condition
является false.
Должно совпадать с типом expr_if_true (числовой,
либо строковой , либо UDT).
Описание
IIf возвращает различное числовое или строковое или UDT значение
в зависимости от результата условного выражения. Его обычно используется в
середине выражения; это поможет избежать разбивки выражения на отдельные
блоки.
IIf только оценивает выражение, которое необходимо возвратить.
Это экономит время и также может быть полезным для предотвращения вычисления
выражений, которые могут быть недопустимыми в зависимости от condition.
Предупреждение: Способность смешивать разные числовые типы, строковые
и UDT данные поддерживается только начиная с
версии компилятора 0.25.
Пример
Dim As Integer a, b, x, y, z
a = (x + y + IIf(b > 0, 4, 7)) \ z
это эквивалентно:
Dim As Integer a, b, x, y, z, temp
If b > 0 Then temp = 4 Else temp = 7
a = (x + y + temp) \ z
Dim As Integer I
I = -10
Print I, IIf(I>0, "positive", IIf(I=0, "null", "negative"))
I = 0
Print I, IIf(I>0, "positive", IIf(I=0, "null", "negative"))
I = 10
Print I, IIf(I>0, "positive", IIf(I=0, "null", "negative"))
Sleep
Type UDT1
Dim As Integer I1
End Type
Type UDT2 Extends UDT1
Dim As Integer I2
End Type
Dim As UDT1 u1, u10 = (1)
Dim As UDT2 u2, u20 = (2, 3)
u1 = IIf(0, u10, u20)
Print u1.I1
u1 = IIf(1, u10, u20)
Print u1.I1
u2 = IIf(0 , u10, u20)
Print u2.I1; u2.I2
'u2 = Iif(1, u10, u20) ''Invalid assignment/conversion
Sleep
Различия диалектов
- Не доступно в диалекте -lang qb
, но есть псевдоним __Iif.
Отличия от QB
См. также