2013-01-23 61 views
1

我在一個列表讀取文件,例如文件的格式是:目錄的項目

blue 
yellow 
green 
red 

,現在我想找到項目的位置(索引)「綠色「如果正確完成,結果將是」3「,因爲它是列表中的第三項。

也許我不擅長搜索谷歌,但我不能在任何地方找到一個解決方案:/所以這個整體思路是:

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

首先我必須知道它的存在之前,我得到的它的索引。此外,我正在努力做到這一點,而不必製作任何我不得不打電話的新功能。

感謝您的幫助

+1

seehttp://stackoverflow.com/questions/1459152/erlang-listsindex-of-function –

+0

@Rachel羅嘉良得到它的工作的感謝:d – ace007

+0

@Rachel Gallen只是1個問題,如果項目不存在,我會得到一個錯誤,這就是爲什麼在psudo代碼中,我寫了「if(item.exists(List,」green「)){」之前它試圖獲取項目的索引。 – ace007

回答

2

一種方法是用一個拉鍊花邊號碼就行了:

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,