我想知道在dm-script中是否没有惰性的评估?
我有下面的代码片段来检查TagGroup是否有效。它抛出一个错误,告诉我没有定义TagGroup,所以TagGroupCountTags()函数不能在这个TagGroup上执行。但是这就是这个片段的目的,检查TagGroup和index是否有效。
我试着调试代码。第一个语句tg.TagGroupIsValid()返回false,当然,0 <= index也是。为什么tg.TagGroupCountTags()还在执行?我不能否定没有懒惰的评价。
number index = -1; // of course this is not set to -1 in my original code, this is just for demonstration
TagGroup tg;
clearResults();
result(tg.TagGroupIsValid() + "\n"); // resturns 0
result((0 <= index) + "\n"); // returns 0
if(tg.TagGroupIsValid() && 0 <= index && index < tg.TagGroupCountTags()){
result("Valid.");
}
else{
result("Invalid.");
}发布于 2020-06-04 14:47:53
是的,DM-Script中的条件总是被完全计算(没有懒惰的计算),所以您必须以嵌套的方式放置If-子句。如果您使用的是第三运算符(?),这也是正确的。
https://stackoverflow.com/questions/62195513
复制相似问题