搜索列表中的关键字

时间:2013-04-07 09:46:05

标签: ocaml

任何人都可以向我展示一个使用List.find在列表中搜索项目的工作示例..如果找到则打印“找到”。

令人惊讶的是,我没有在文档中找到它的用法示例,在谷歌上没有找到它,只有1个在SO上让我困惑并给出了错误。我只需要一个基本的工作示例来开始。

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

很多downvotes?猥亵者不应该在评论中指明原因吗?

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

由于如果找不到该元素,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")左右。 (您也可能想要了解OCaml中的相等性。)