ListRelation范围的总和

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

我有一个称为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

为什么第二种方法返回不同的结果?

sum range rascal
1个回答
1
投票

ListRelation中的范围函数“挤出”重复的条目,但保持其顺序。

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