DM 脚本是否有惰性评估?

Does DM-script have lazy evaluation?

我想知道 dm-script 中是否没有惰性评估?


我有以下代码片段来检查 TagGroup 是否有效。它抛出一个错误,告诉我 TagGroup 未定义,因此无法在此 TagGroup 上执行 TagGroupCountTags() 函数。但这就是这个片段的目的,检查 TagGroupindex 是否有效。

我尝试调试代码。第一种说法tg.TagGroupIsValid()returns不对,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.");
}

是的,DM-Script 中的条件总是完全求值(没有延迟求值),因此您必须以嵌套方式放置 If 子句。如果您使用的是第三运算符 (?),也是如此。