我需要从 foldl 中解脱出来。这是一个虚拟示例,当我计算列表中值的总和并遇到太大的值(即 10)时如何从折叠中中断
L = [1,2,3,4,10,5,6,7],
Res =
try
lists:foldl(
fun(I, Value) ->
if (I < 10) ->
Value + I;
true ->
throw({too_big_value, Value})
end
end,
0, L)
catch
throw:{too_big_value, Value} -> Value
end,
Res.
我知道这个例子是人为的,但是有什么好的方法可以打破折叠(我知道折叠总是扫描整个结构)?
请注意,即使我从折叠中中断,我也需要检索正确的数据。在这种情况下,我应该从以前的迭代中获取数据(就像在我的示例中所做的那样)。