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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。