Erlang中文手册(Erldoc.com)  »  lists  »  splitwith/2
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

lists:splitwith/2

基于一个断言把一个列表分成两个列表

用法:

splitwith(Pred, List) -> {List1, List2}

内部实现:

-spec splitwith(Pred, List) -> {List1, List2} when
      Pred :: fun((T) -> boolean()),
      List :: [T],
      List1 :: [T],
      List2 :: [T],
      T :: term().

splitwith(Pred, List) when is_function(Pred, 1) ->
    splitwith(Pred, List, []).

splitwith(Pred, [Hd|Tail], Taken) ->
    case Pred(Hd) of
	true -> splitwith(Pred, Tail, [Hd|Taken]);
	false -> {reverse(Taken), [Hd|Tail]}
    end;
splitwith(Pred, [], Taken) when is_function(Pred, 1) ->
    {reverse(Taken),[]}.

基于一个断言 Pred 把一个列表分成 List1 和 List1 这两个列表,List1 里的元素是由在 Pred 函数调用返回 true 的组成,List2 则是直到断言判断遇到一个 false,List 剩下的元素

lists:splitwith(fun(E) -> E < 3 end, [1, 2, 3, 4, 5]).
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9