IIF 运算符根据返回 LOGIC 类型值的表达式,返回两个值中的一个。IIF 运算符的形式为
IIF( conditionExpression, trueExpression, falseExpression ) |
conditionExpression 可以是任何返回 LOGIC 类型值的表达式,或可以隐式转换为 LOGIC 类型的表达式。
如果 conditionExpression 的值为 TRUE,则会对 trueExpression 进行求值并得到结果。如果 conditionExpression 的值为 FALSE,则会对 falseExpression 进行运算并得出结果。
两个表达式中只有一个会被求值。
IIF 运算符的返回类型由以下规则决定:
前提
•tT 是 trueExpression 的类型
•tF 是 falseExpression 的类型
•tR 是 IIF 表达式类型
1.如果 tT 和 tF 是同一类型,则 tR 就是该类型。
2.如果 tT 和/或 tF 为 USUAL,则必要时将 tT 或 tF 转换为 USUAL,tR 为 USUAL。
3.如果 tT 可以隐式转换为 tF,那么 tR 就是 tF。
4.如果 tF 可以隐式转换为 tT,那么 tR 就是 tT。
5.如果 tT 可以隐式地转换为 tF,而 tF 也可以隐式地转换为 tT,那么 tR 就是模棱两可的,编译器会出错。
6.如果 tT 不能隐式转换为 tF,而 tF 又不能隐式转换为 tT,那么 tR 就是不确定的,编译器会出错。
请注意,如果 tT 和 tF 是 VOID,则 tR 也是 VOID,并且 IIF 操作符不能用作其他表达式的操作数,也不能用作函数或方法参数。
在这种情况下,IIF 操作符本质上与 IF...ELSE...ENDIF 结构相同,只能在独立的表达式语句中使用。
在第 5 和第 6 种情况下,可以通过对 trueExpression 或 falseExpression 进行显式转换来解决错误。
在这些方言中,返回值通常由以下规则决定
1.如果 tT 和 tF 是同一类型,则 tR 就是该类型。
2.否则 tT 和 tR 将隐式转换为 USUAL,tR 为 USUAL。
您可以使用 /vo10 编译器选项在 X# 中启用此行为,但只建议在其他环境(如 Visual Objects)中编写的代码使用此选项。
为了与 Visual Objects 和其他几种方言兼容,还支持 IF() 操作符