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 filtermap(Fun, Q1)用法及代碼示例
- erlang filtermap(Fun, MapOrIter)用法及代碼示例
- erlang filter(Fun, Q1 :: queue(Item))用法及代碼示例
- erlang filter(Pred, Orddict1)用法及代碼示例
- erlang filter(Pred, MapOrIter)用法及代碼示例
- erlang file_read用法及代碼示例
- erlang file_size用法及代碼示例
- erlang find用法及代碼示例
- erlang find(Key, Orddict)用法及代碼示例
- erlang find(Key, Map)用法及代碼示例
- erlang find(String, SearchPattern)用法及代碼示例
- erlang field(BinRel)用法及代碼示例
- erlang float用法及代碼示例
- erlang from_list用法及代碼示例
- erlang fun2ms(LiteralFun)用法及代碼示例
- erlang float(Number)用法及代碼示例
- erlang float_to_binary(Float, Options)用法及代碼示例
- erlang float_to_list(Float, Options)用法及代碼示例
- erlang floor(Number)用法及代碼示例
- erlang fun_to_list(Fun)用法及代碼示例
- erlang fold(Fun, Acc0, Q :: queue(Item))用法及代碼示例
- erlang fetch(Key, Orddict)用法及代碼示例
- erlang fetch_keys(Orddict)用法及代碼示例
- erlang fold(Fun, Acc0, Orddict)用法及代碼示例
- erlang foldl(Fun, Acc0, Archive)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 filtermap(Fun, List1) -> List2。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。