-2

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

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

4

2 回答 2

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")
于 2013-04-10T09:35:07.420 回答
0

很多反对票?投票者不应该在评论中说明原因吗?

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

由于 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)etc。当然,如果列表是字符串列表,你会使用(fun s -> s = "my_keyword")orso。(您可能还想在 OCaml 中搜索关于平等的信息。)

于 2013-04-07T13:39:50.760 回答