0
私はこの機能を持っている:結果がブールのリストであるマップ関数内の特定の値を取り出す方法は?
、言うことができます:結果は、私はの値を取得したい1「真」 が含まれていることを
[false,false,false,true,...]
は注意:
我々の場合で真
"ハロー"
です
。
私はこの機能を持っている:結果がブールのリストであるマップ関数内の特定の値を取り出す方法は?
、言うことができます:結果は、私はの値を取得したい1「真」 が含まれていることを
[false,false,false,true,...]
は注意:
我々の場合で真
"ハロー"
です
。
あなたは真のisExists/2
リターンの結果のリストを取得するためにlists:filter/2
を使用することができます。
1> Headers = "hellohellohello".
"hellohellohello"
2> lists:filter(fun(X) -> isExists(X,Headers) end, ["h","he","hell","hello"]).
["hello"]
をしかし、それはリストではなく、値を返します。また、あなたはisExists/2
にそれを渡した結果で、リスト内の各値をペアリングして、結果を抽出するためにlists:keyfind/3
を使用するlists:map/2
を使用することができます。
4> lists:keyfind(true, 1, lists:map(fun(X) -> {isExists(X,Headers), X} end, ["h","he","hell","hello"])).
{true,"hello"}
しかし、この代替は、複数のリストトラバーサルを必要とし、それがA返しますタプルから値を抽出する必要があります。
がおそらく最善の選択肢は、lists:foldl/3
を使用することである。
3> lists:foldl(fun(X,Acc) -> case isExists(X,Headers) of true -> X; false -> Acc end end, false, ["h","he","hell","hello"]).
"hello"
一致する結果がない場合、この例ではfalse
あるアキュムレータの初期値は、代わりに返されます。