Erlang 如何在映射函数中检索特定值?

Erlang 如何在映射函数中检索特定值?,erlang,Erlang,我有这个功能: Headers = "hellohellohello". lists:map(fun(X) -> isExists(X,Headers) end, ["h","he","hell","hello",...]). 结果是一个布尔值列表,比如: [false,false,false,true,...] 请注意,结果包含一个“true” 我想得到以下各项的价值: 真的 那是 “你好” 在我们的例子中。您可以使用获取结果列表,其中isExists/2返回true: 1>

我有这个功能:

Headers = "hellohellohello".
lists:map(fun(X) -> isExists(X,Headers) end, ["h","he","hell","hello",...]).
结果是一个布尔值列表,比如:

[false,false,false,true,...] 
请注意,结果包含一个“true” 我想得到以下各项的价值:

真的

那是

“你好”

在我们的例子中。

您可以使用获取结果列表,其中
isExists/2
返回true:

1> Headers = "hellohellohello".
"hellohellohello"
2> lists:filter(fun(X) -> isExists(X,Headers) end, ["h","he","hell","hello"]).
["hello"]
但它返回的是一个列表,而不是一个值。或者,您可以使用将列表中的每个值与传递给
isExists/2
的结果配对,然后使用提取结果:

4> lists:keyfind(true, 1, lists:map(fun(X) -> {isExists(X,Headers), X} end, ["h","he","hell","hello"])).
{true,"hello"}
但是这个替代方案需要多次列表遍历,并且它返回一个元组,您必须从中提取值

也许最好的选择是使用:

如果没有匹配的结果,则将返回累加器的初始值,在本例中为
false

您可以使用获取结果列表,其中
isExists/2
返回true:

1> Headers = "hellohellohello".
"hellohellohello"
2> lists:filter(fun(X) -> isExists(X,Headers) end, ["h","he","hell","hello"]).
["hello"]
但它返回的是一个列表,而不是一个值。或者,您可以使用将列表中的每个值与传递给
isExists/2
的结果配对,然后使用提取结果:

4> lists:keyfind(true, 1, lists:map(fun(X) -> {isExists(X,Headers), X} end, ["h","he","hell","hello"])).
{true,"hello"}
但是这个替代方案需要多次列表遍历,并且它返回一个元组,您必须从中提取值

也许最好的选择是使用:

如果没有匹配结果,则将返回累加器的初始值,在本例中为
false