任何人都可以给我看一个使用List.find
在列表中搜索一个项目的工作示例,如果发现它,则会打印“找到”。搜索关键字列表
令人惊讶的是,我没有发现它在文档中的使用示例,也没有在谷歌上使用,只有1例使我困惑并给出了错误。我只需要一个基本的工作示例就可以开始。
任何人都可以给我看一个使用List.find
在列表中搜索一个项目的工作示例,如果发现它,则会打印“找到”。搜索关键字列表
令人惊讶的是,我没有发现它在文档中的使用示例,也没有在谷歌上使用,只有1例使我困惑并给出了错误。我只需要一个基本的工作示例就可以开始。
很多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中的平等。)
感谢您的回复:)你也碰巧知道如何比较int引用吗?我试图比较一个int引用和1,并继续获得int参考期望:/ – ace007 2013-04-08 02:50:06
是的,你必须用ref引用ref,就像'let i = ref 2 in!i = 4' – 2013-04-08 08:50:36
如果你并不需要保存的元素中找到,您可以使用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")
我想人们会有兴趣知道你在看哪一个。 – nlucaroni 2013-04-08 19:08:20