当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang fold(Fun, Init, MapOrIter)用法及代码示例


fold(Fun, Init, MapOrIter) -> Acc
OTP 17.0
类型:
Fun = fun((Key, Value, AccIn) -> AccOut)
Init = term()
Acc = AccOut
AccIn = Init | AccOut
MapOrIter = #{Key => Value} | iterator(Key, Value)

对每个Key 调用F(Key, Value, AccIn),以任意顺序对MapOrIter 中的Value 关联进行赋值。函数 fun F/3 必须返回一个新的累加器,该累加器将传递给下一个连续调用。该函数返回累加器的最终值。如果映射为空,则返回初始累加器值Init

如果 MapOrIter 不是映射或有效迭代器,则调用失败,并出现 {badmap,Map} 异常;如果 Fun 不是 arity 3 的函数,则调用失败,并出现 badarg 异常。

例子:

> Fun = fun(K,V,AccIn) when is_list(K) -> AccIn + V end,
  Map = #{"k1" => 1, "k2" => 2, "k3" => 3},
  maps:fold(Fun,0,Map).
6

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 fold(Fun, Init, MapOrIter) -> Acc。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。