我想知道dm-script中是否没有惰性评估?
我有以下代码片段检查aTagGroup
是否有效。它引发了一个错误,告诉我TagGroup
未定义,因此TagGroupCountTags()
无法在此函数上执行TagGroup
。但这就是该片段的目的,检查TagGroup
和index
是否有效。
我试图调试代码。当然tg.TagGroupIsValid()
,第一条语句0 <= index
也会返回false 。为什么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中的条件总是被完全评估(没有惰性评估),因此您必须以嵌套方式放置条件子句。如果您使用的是三级运算符(?),则也是如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句