这个Erlang声明做了什么?

com*_*tta 2 erlang

我有这个Erlang代码:

not lists:any(fun(Condition) ->Condition(Message) end, Conditions).
Run Code Online (Sandbox Code Playgroud)

任何人都可以用外行的话来解释整个声明吗?对于您的信息Condition是一个函数,Conditions是一个数组.什么fun(Condition) ->Condition(Message) end意思?以及的含义not lists:any.

Ste*_*ham 6

fun(Condition) ->Condition(Message) end
Run Code Online (Sandbox Code Playgroud)

是一个lambda函数,它将函数应用于ConditionMessage(作为周围代码的闭包).

lists:any 
Run Code Online (Sandbox Code Playgroud)

是一个函数,它接受一个谓词和一个值列表,并依次调用每个值的谓词,并在true任何谓词调用时返回原子.

总体而言,结果是原子true,如果没有的Condition列表功能Conditions返回trueMessage值.

编辑 - 添加文档 lists:any

any(Pred, List) -> bool()
Run Code Online (Sandbox Code Playgroud)

类型:

Pred = fun(Elem) -> bool()
 Elem = term()
List = [term()]
Run Code Online (Sandbox Code Playgroud)

如果Pred(Elem)ElemList 中的至少一个元素返回true,则返回true .