我想知道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.");
}
是的,DM脚本中的条件总是被完全评估(没有惰性评估),因此您必须以嵌套方式放置If子句。如果您使用的是三级运算符(?),也是如此。