當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。