如何在OCaml中找到Array元素的索引

时间:2015-11-28 17:58:07

标签: functional-programming ocaml ocaml-batteries

我试图在ocaml中找到整数数组元素的索引。如何递归地执行此操作。 示例代码:let a = [|2; 3; 10|];; 假设我想在数组a中返回3的索引。任何帮助赞赏。我是OCaml编程的新手

3 个答案:

答案 0 :(得分:4)

type opt = Some of int | None;;

let find a i =
  let rec find a i n =
    if a.(n)=i then Some n
    else find a i (n+1)
  in
  try 
    find a i 0
   with _ -> None
;;

测试

# find a 3;;
- : int option = Some 1
# find [||] 3;;
- : int option = None
# find a 12;;
- : int option = None

答案 1 :(得分:3)

使用索引

递归检查每个元素
go run

如果元素不是数组的一部分,则会引发异常(当n大于数组的长度时)。

答案 2 :(得分:1)

let f xs x =
  let i = ref (-1) in
  let () = Array.iteri (fun n elt -> if x = elt then i := n else ()) xs in
  !i

如果元素不在列表中,则返回值为-1