DM 脚本是否有惰性评估?
Does DM-script have lazy evaluation?
我想知道 dm-script 中是否没有惰性评估?
我有以下代码片段来检查 TagGroup
是否有效。它抛出一个错误,告诉我 TagGroup
未定义,因此无法在此 TagGroup
上执行 TagGroupCountTags()
函数。但这就是这个片段的目的,检查 TagGroup
和 index
是否有效。
我尝试调试代码。第一种说法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 子句。如果您使用的是第三运算符 (?),也是如此。
我想知道 dm-script 中是否没有惰性评估?
我有以下代码片段来检查 TagGroup
是否有效。它抛出一个错误,告诉我 TagGroup
未定义,因此无法在此 TagGroup
上执行 TagGroupCountTags()
函数。但这就是这个片段的目的,检查 TagGroup
和 index
是否有效。
我尝试调试代码。第一种说法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 子句。如果您使用的是第三运算符 (?),也是如此。