1

ファイルをリストに読み込みました。たとえば、ファイルの形式は次のとおりです。

 blue
 yellow
 green
 red

そして今、アイテム「緑」の場所(インデックス)を見つけたいと思っています。正しく行われた場合、リストの3番目のアイテムであるため、結果は「3」になります。

多分私はグーグルを検索するのが苦手ですが、どこにも解決策を見つけることができませんでした:/したがって、これの全体的なアイデアは次のとおりです。

if (item.exists(List, "green")) {
    index = indexOf(List, "green")
}

まず、インデックスを取得する前に、存在するかどうかを知る必要があります。また、呼び出さなければならない新しい関数を作成することなく、これを実行しようとしています。

助けてくれてありがとう

4

1 に答える 1

2

1 つの方法は、zip を使用してリストに番号を並べることです。

L = [blue, yellow, green, red],
case lists:keyfind(green, 1, lists:zip(L, lists:seq(1, length(L))) of
  false -> not_there;
  {green, Idx} -> {found, Idx}
end,
...

(未検証)

問題は、インデックスが必要なことです。あるとしても、erlang プログラムでインデックスを使用することはめったにありません。むしろ、おそらくリストをセットとして表現します。

Set = sets:from_list(L),
case sets:is_element(green, Set) of
   true -> ...;
   false -> ...
end,
于 2013-01-24T00:03:04.887 に答える