语法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