lists:flatmap/2
对映射 map 调用返回的列表进行附加 append 操作
用法:
flatmap(Fun, List1) -> List2
内部实现:
-spec flatmap(Fun, List1) -> List2 when Fun :: fun((A) -> [B]), List1 :: [A], List2 :: [B], A :: term(), B :: term(). flatmap(F, [Hd|Tail]) -> F(Hd) ++ flatmap(F, Tail); flatmap(F, []) when is_function(F, 1) -> [].
列表 List1 里的每一个元素以参数的方式被函数 Fun 调用,并把调用返回的列表进行 "++" 合并操作,最终返回一个列表。其效用跟 lists:append(lists:map(Fun, List1)) 一样。
lists:flatmap(fun(X)->[X, X] end, [a, b, c])