任何人都可以給我看一個使用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