我有一个称为PLOC的ListRelation类型:
lrel[loc, int] PLOCs = [<a, calcPLOC(a)> | a <- files];
其中文件是一组位置,而calcPLOC根据该位置计算一个整数。
现在我想要所有计算出的整数之和。我使用了3种不同的方法来计算这一点,并得到2种不同的答案:
1:
total = 0;
for (<a, b> <- PLOCs) {
total += b;
}
println("total PLOC: <total>"); // returns 23805
2:
total = sum(range(PLOCs));
println("total PLOC: <total>"); // returns 21313
3:
total = (0 | it + b | <a, b> <- PLOCs);
println("total PLOC: <total>"); // returns 23805
为什么第二种方法返回不同的结果?
ListRelation中的范围函数“挤出”重复的条目,但保持其顺序。