> Erlang中文手册 > any/2 如果列表里的某一个元素满足条件则返回 true

lists:any/2

如果列表里的某一个元素满足条件则返回 true

用法:

any(Predicate, List) -> bool()

内部实现:

-spec any(Pred, List) -> boolean() when
      Pred :: fun((Elem :: T) -> boolean()),
      List :: [T],
      T :: term().

any(Pred, [Hd|Tail]) ->
    case Pred(Hd) of
	true -> true;
	false -> any(Pred, Tail)
    end;
any(Pred, []) when is_function(Pred, 1) -> false. 

跟 lists:all 一样,列表里的每个元素给 Predicate 断言函数调用,并返回一个布尔值 true 或 false,不同的是,如果调用返回的结果中至少有一个是 true,那么函数 lists:any/2 返回 true,否则返回 false

Predicate = fun(E) -> E rem 2 == 0 end,
lists:any(Predicate, [3, 5, 6, 9]).