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