dm-script惰性评估

问题描述 投票:1回答:1

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


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

我试图调试代码。第一个语句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.");
}
lazy-evaluation dm-script
1个回答
0
投票

是的,DM脚本中的条件总是被完全评估(没有惰性评估),因此您必须以嵌套方式放置If子句。如果您使用的是三级运算符(?),也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.