如何解决例外:Invalid_argument“索引越界”
我写了以下内容:
type slidingTile= { mutable mat: char array array; mutable row: int; mutable column: int};;
let a={mat=[|[|'1';'2';'3'|];[|'4';'5';'6'|];[|'7';'8';'9'|]|]; row=3;column=3};;
let slide tile i j=
let copy mat =
let mat1 =Array.make_matrix (Array.length mat) (Array.length mat.(0)) mat.(0).(0) in
for i=0 to Array.length mat do
for j=0 to Array.length mat.(0) do
mat1.(i).(j)<- mat.(i).(j)
done; done; mat1 in
let mat1 = copy tile.mat in
if (i>Array.length tile.mat) || (j>Array.length tile.mat.(0)) then
tile
else if (i=tile.row+1 && j=tile.column) || (i=tile.row-1 && j=tile.column) || (i=tile.row && j=tile.column+1) || (i=tile.row && j=tile.column-1) then
(mat1.(i-1).(j-1)<-tile.mat.(tile.row-1).(tile.column-1);
mat1.(tile.row-1).(tile.column-1)<-tile.mat.(i-1).(j-1);
tile.mat<-mat1;
tile.row<-i;
tile.column<-j;
tile)
else tile;;
此代码运行正常,但是当我调用 slide a 2 2;;
时,我收到消息 Exception: Invalid_argument "index out of bounds"
。我从未见过这种消息。发生了什么?
解决方法
此错误表明您访问了一个索引小于 0 或 >= 数组大小的数组。即,越界索引。
# let a = Array.make 10 0;;
val a : int array = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0|]
# a.(-1);;
Exception: Invalid_argument "index out of bounds".
# a.(10);;
Exception: Invalid_argument "index out of bounds".
# a.(4);;
- : int = 0
(如果您需要更多有关代码的帮助,您应该对其进行格式化,使其更具可读性。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。