我正在为大学课程学习Ada语言,但我对其中一些概念感到困惑。
我目前遇到的问题是:假设我有一个函数,它接受一个矩阵(只是一个整数二维数组),并返回一个新的、更小的矩阵(去掉第一行和第一列)。
我这样声明矩阵和函数:
然后我进行计算并返回Result_matrix。我的问题是:当我尝试将此函数的结果返回到任何不是具有完全正确大小的已声明矩阵中时,我会在运行时得到异常。我的问题是,我这样做对吗?我觉得我不应该提前知道函数返回的大小。即使使用比我得到的矩阵更大的已声明矩阵,我仍然会出现错误。不过,整个Ada的思想是强类型,所以也许这是有意义的(我应该确切地知道返回类型)。总之,我是否正确地执行了此操作,是否真的没有办法在预先不知道返回矩阵大小的情况下使用此函数?谢谢,Edan。
我目前遇到的问题是:假设我有一个函数,它接受一个矩阵(只是一个整数二维数组),并返回一个新的、更小的矩阵(去掉第一行和第一列)。
我这样声明矩阵和函数:
type MATRIX is array(INTEGER range <>, INTEGER range <>) of INTEGER;
function RemoveFirstRowCol (InMatrix: in MATRIX) return MATRIX is
然后我决定返回矩阵的大小:
Result_matrix: MATRIX (InMatrix'First(1) .. InMatrix'Length(1) - 1, InMatrix'First(2) .. InMatrix'Length(2) - 1);
然后我进行计算并返回Result_matrix。我的问题是:当我尝试将此函数的结果返回到任何不是具有完全正确大小的已声明矩阵中时,我会在运行时得到异常。我的问题是,我这样做对吗?我觉得我不应该提前知道函数返回的大小。即使使用比我得到的矩阵更大的已声明矩阵,我仍然会出现错误。不过,整个Ada的思想是强类型,所以也许这是有意义的(我应该确切地知道返回类型)。总之,我是否正确地执行了此操作,是否真的没有办法在预先不知道返回矩阵大小的情况下使用此函数?谢谢,Edan。