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


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


filtermap(Fun, List1) -> List2
OTP R16B01
类型:
Fun = fun((Elem) -> boolean() | {true, Value})
List1 = [Elem]
List2 = [Elem | Value]
Elem = Value = term()

List1 的连续元素 Elem 调用 Fun(Elem)Fun/1 必须返回布尔值或元组 {true, Value} 。该函数返回 Fun 返回新值的元素列表,其中 true 的值与 {true, Elem} 同义。

也就是说,filtermap 的行为就好像它已被定义如下:

filtermap(Fun, List1) ->
    lists:foldr(fun(Elem, Acc) ->
                       case Fun(Elem) of
                           false -> Acc;
                           true -> [Elem|Acc];
                           {true,Value} -> [Value|Acc]
                       end
                end, [], List1).

例子:

> lists:filtermap(fun(X) -> case X rem 2 of 0 -> {true, X div 2}; _ -> false end end, [1,2,3,4,5]).
[1,2]

相关用法


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