lists:dropwhile/2
当断言为真则从列表里丢弃该元素
用法:
dropwhile(Predicate, List1) -> List2
内部实现:
-spec dropwhile(Pred, List1) -> List2 when Pred :: fun((Elem :: T) -> boolean()), List1 :: [T], List2 :: [T], T :: term(). dropwhile(Pred, [Hd|Tail]=Rest) -> case Pred(Hd) of true -> dropwhile(Pred, Tail); false -> Rest end; dropwhile(Pred, []) when is_function(Pred, 1) -> [].
列表 List1 里的每一个元素以参数的方式被函数 Predicate 调用,如果元素在函数 Predicate 中的执行结果是 true,则丢弃该元素,接着继续调用下一个元素;如果执行的结果是 false,则立刻结束,并返回一个由剩下的元素组成的列表。
lists:dropwhile(fun(E) -> E =< 0 end, [-3, -2, -1, 0, 1, -1, 2, 3]).