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


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


filtermap(Fun, MapOrIter) -> Map
OTP 24.0
类型:
Fun = fun((Key, Value1) -> boolean() | {true, Value2})
MapOrIter = #{Key => Value1} | iterator(Key, Value1)
Map = #{Key => Value1 | Value2}

返回映射 Map,它是对每个 Key 调用 Fun(Key, Value1)MapOrIter 中以任意顺序值 Value1 关联的结果。

如果 Fun(Key, Value1) 返回 true ,则关联将被复制到结果映射中。如果它返回 false ,则不会复制关联。如果返回 {true, NewValue} ,则结果映射中 Key 的值将替换为 NewValue

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

例子:

> Fun = fun(K,V) when is_atom(K) -> {true, V*2}; (_,V) -> (V rem 2) =:= 0 end,
  Map = #{k1 => 1, "k2" => 2, "k3" => 3},
  maps:filtermap(Fun,Map).
#{k1 => 2,"k2" => 2}

相关用法


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