IIf
 
Условная функция, которая возвращает одно из двух значений.

Синтаксис

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

  • Новое в FreeBASIC

См. также