2013-04-07 184 views
-2

任何人都可以给我看一个使用List.find在列表中搜索一个项目的工作示例,如果发现它,则会打印“找到”。搜索关键字列表

令人惊讶的是,我没有发现它在文档中的使用示例,也没有在谷歌上使用,只有1例使我困惑并给出了错误。我只需要一个基本的工作示例就可以开始。

+0

我想人们会有兴趣知道你在看哪一个。 – nlucaroni 2013-04-08 19:08:20

回答

0

很多downvotes?不应该downvoters指定为什么在评论左右?

无论如何,这是一个解决方案。

由于List.find引发Not_found如果没有找到该元素,你应该在try ... with块中使用它:

try 
    let elem = List.find (fun i -> i = 1) [1;2;3] in 
    print_endline ("Found integer "^(string_of_int elem)) 
with 
    Not_found -> 
     print_endline "Found no element" 

(fun i -> i = 1)部分是一个函数,它接受一个元素(从列表中)和比较它与任何条件应该保持你试图找到的元素。它也可以像(fun i -> i > 2)等等。当然,如果列表是一个字符串列表,你可以使用(fun s -> s = "my_keyword")左右。 (您可能还需要google一下OCaml中的平等。)

+0

感谢您的回复:)你也碰巧知道如何比较int引用吗?我试图比较一个int引用和1,并继续获得int参考期望:/ – ace007 2013-04-08 02:50:06

+0

是的,你必须用ref引用ref,就像'let i = ref 2 in!i = 4' – 2013-04-08 08:50:36

1

如果你并不需要保存的元素中找到,您可以使用List.exists:

if(List.exists (fun i -> i = 1) [1;2;3]) 
    then print_endline ("Found") 
    else print_endline ("Not found") 

或者List.mem:

if(List.mem 1 [1;2;3]) 
    then print_endline ("Found") 
    else print_endline ("Not found")