OCaml - 修改数组值

OCaml - Modify array values

我想用这个函数修改现有的数组,但出于我不明白的原因,一旦我将函数应用到数组,值就不会改变。 我错过了什么?

提前致谢

let test v (a,b) = 
for i=a to b do
    if ((Array.get v i)>(Array.get v i+1)) then
        let tmp = (Array.get v i) in
            v.(i)<-(Array.get v i+1); 
            v.(i+1)<-tmp;           
done;;

错误在 Array.get v i+1 中:这表明 v 是一个 int 数组,并且您加 1 并使条件始终为假。 只需将 i+1 放在括号中:v 将是任何类型的数组,它将解决您的问题。

let test v (a,b) = 
for i=a to b do
    if Array.get v i > Array.get v (i+1) then
        let tmp = (Array.get v i) in
            v.(i)<-(Array.get v (i+1)); 
            v.(i+1)<-tmp;           
done;;

你可以写成使用 v.(i) > v.(i+1)。

最佳做法是在包括二元运算符在内的函数应用程序中放置空格。

很多新人容易误会

Array.get v i+1

as Array.get v (i+1) 但是如果写成

Array.get v i + 1

那么出错的几率应该会低很多。