2013-04-07 123 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")