> Erlang中文手册 > flatmap/2 对映射 map 调用返回的列表进行附加 append 操作

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])