Invalid_argument数组。 blit ocaml

时间:2014-12-13 07:22:44

标签: ocaml

我输入了一个模式匹配案例

let myfnc fr dr = 
    match something with
    |not important
    |not important 
    | Obj (a,b,c) -> Array.blit rm fr rm dr a; (dr+a,dr)  

其中fr dra是整数值,而rm是我的数组的名称

它正在编译,但我收到运行时错误,指出无效的参数Array.blit

rm是一个大小为64的数组,fr位于31下方,dr位于32之上,{ {1}}值低于a

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

问题在于,您的假设是不成立,还是dr + a >= Array.length rm。检查您的假设是个好主意:

assert (dr > 32);
assert (fr < 31);
assert (Array.length rm = 64);
assert (a < 5);
assert (dr + a < Array.length rm);