2013-01-23 63 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,