1

私はErlangでチェック機能を作ろうとしています.1つの単語と単語のリストがあります.

list_word() ->
     ["bad1", "bad2", "bad3"].

そして、リスト内のこの単語がfalseを返す以外はtrueを返すかどうかを確認しようとしています

例 :

check_list() ->
    badword = list_word(),
    if "bad1" == badword ->
        %% do some thing

この場合、リストの最初の単語ですが、2 番目の単語はそうではなく、true を返したくありません

check_list() ->
    badword = list_word(),
    if "bad1 test" == badword ->
        %% do some thing

どうすればできますか?

4

1 に答える 1

3

見てくださいlists:member/2— として実装されているBIFので、非常に高速です。

case lists:member("bad1", list_word()) of
    true ->
        %% do something
        ;
    false ->
        ok
end.

編集:2番目の例では、次のようなことができます:

Words = list_word(),
Found = fun(Word) -> lists:member(Word, Words) end,
BadWords = string:tokens("bad1 test", " "),
case lists:any(Found, BadWords) of
    true ->
        %% do something
        ;
    false ->
        ok
end.
于 2015-09-11T18:44:44.207 に答える