TSL语言基础 > TSL语言基础 > 基础知识 > 运算符 > 三目运算符 > ?:判断求值三元运算符

?:省略真表达式的三元运算符的特殊用法    

  • 语法2:Condition?:FalseResult
    说明:若Condition为真,则返回Condition,若Condition为假,则返回FalseResult。 
      在计算中,经常会出现有NIL值,NIL值的产生原因是多种多样的,例如多表的SELECT JOIN查询产生(我们姑且先不去理解什么是SELECT JOIN),当产生NIL值以后,NIL无法和其他数据类型进行运算,会产生错误。用户可能会希望在计算的时候利用0或者空字符串来替代掉NIL,使得计算可以继续。
      例如:
      Aexp+1,由于Aexp可能是NIL会出错,那么用户可能会采用如下来替代:
      (Aexp?Aexp:0)+1
      有时候Aexp计算的表达式很长,这样写起来就会很不方便,运算的时候效率也会比较低,因为Aexp可能需要计算两次,在这种特殊用途中,TSL语言支持省略掉真表达式,缺省认为为真的时候的值就是?之前表达式的本身的计算结果,这种写法就可以缩略为:
      (Aexp?:0)+1

    示例:计算一个序列中各元素的和,nil值用0替代。
    a:=array(1,2,3,nil,100);
    s:=0;
    for i,v in a do
     s+=v?:0;
    return s;

    返回结果为:106