lists:filter/2
选择符合满足断言条件的元素
用法:
filter(Predicate, List1) -> List2
内部实现:
-spec filter(Pred, List1) -> List2 when Pred :: fun((Elem :: T) -> boolean()), List1 :: [T], List2 :: [T], T :: term(). filter(Pred, List) when is_function(Pred, 1) -> [ E || E <- List, Pred(E) ].
列表 List1 里的每一个元素以参数的方式被断言函数 Predicate 调用,如果该元素在断言函数 Predicate 执行中返回的是 true,那么则留下,否则被丢弃,最终返回一个符合断言条件的元素的列表。
Predicate = fun(E) -> E rem 2 == 0 end, lists:filter(Predicate, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).