Ocaml中的反向数组

时间:2018-09-11 17:02:24

标签: ocaml

我写这是为了像我通常在Java中那样在OCaml中反转数组:

let reversearray array = let len=Array.length array in
        for i=0 to (len/2) do 
            let temp = array.(i) in
            array.(i) <- array.(len-i-1);
            array.(len-i-1) <- temp done;
        array;;

但是,有时即使有偶数数组,这似乎也不起作用。

# let a2 = [|"a"; "b"; "c"; "d"; "e"; "f"|];;
val a2 : string array = [|"a"; "b"; "c"; "d"; "e"; "f"|]
# reversearray a2;;
- : string array = [|"f"; "e"; "c"; "d"; "b"; "a"|]

有人可以解释出什么问题吗?

1 个答案:

答案 0 :(得分:2)

假设长度为2。对于i = 0和1,您的for循环正在执行。这会使元素反转两次。

常见的一种用受C影响的语言编写循环,如下所示:

for (i = 0; i < len/2; i++)

这仅针对i = 0执行,这做对了。 OCaml对所有值(包括上限值)执行循环。