如何强制DWScript关闭布尔短路求值,追踪全部测试对象成员?
解决DWScript逻辑或短路求值的问题
要强制DWScript执行所有条件而不触发短路求值,有两种实用方案:
拆分条件到变量提前计算
把每个条件单独赋值给变量,再用逻辑或组合结果。这样不管前一个条件是否为真,所有条件都会被执行,确保OnEval事件能收集到所有对象成员。示例代码:var checkFileSize: Boolean; checkImageType: Boolean; begin checkFileSize := File.Size > 1000; checkImageType := Image.Type = 'PNG'; Result := checkFileSize OR checkImageType; end;使用非短路的按位或运算符(
|)
直接用|替代OR。按位或不会触发短路求值,两个条件都会执行,且布尔值场景下的逻辑结果和OR完全一致。示例代码:Result := (File.Size > 1000) | (Image.Type = 'PNG');
如果是开放给终端用户编写脚本,需提前告知他们用上述写法规避短路问题;若为自身生成脚本逻辑,拆分变量的方式可读性更强,也更稳妥。
内容的提问来源于stack exchange,提问作者Petey
相关产品推荐
相关产品推荐

