如何传递常数值矩阵作为过程调用的参数



我想用一个程序测试一些矩阵。每个矩阵应该作为一个矩阵传递,类似于:

type TMatrix = array of array of integer;
procedure test_kernel (mat: TMatrix);
....
test_kernel ([[1, 2], [1, 3]]); // <== does not compile

我找不到正确的语法来正确地做到这一点(也尝试过用圆括号)。有人知道如何传递一个常数矩阵作为一个过程参数吗?这可能吗?

编辑

由于我想要的是不可能的,我决定使用:

type TMatrix = array of integer;
procedure test_kernel (rows, cols: integer; mat: TMatrix);
....
test_kernel (2, 2, [1, 2, 
                    1, 3]); 

所以我得到了矩阵的错觉和可读性。谢谢大家!

如果您使用稍微不同的TMatrix声明,实际上有可能做到这一点,但恕我之言,它不会增加代码的可读性:

type
  TVector = array of integer;
  TMatrix = array of TVector;
procedure test_kernel (mat: TMatrix);
....
test_kernel(TMatrix.Create(TVector.Create(1, 2), TVector.Create(1, 3)));

您不能对常量或开放数组为所欲为。TMatrix是一个动态数组你不能让常数是动态数组。矩阵是二维的,但是开放数组不能嵌套。不能有一个打开数组的打开数组。如果这只是一个向量,即一维,那么你确实可以使用开放数组。然而,因为你有一个二维矩阵,开放数组不能帮助。

你需要使用一个在运行时初始化的变量。如果您确实有一个常量,那么在initialization部分中可以很容易地做到这一点。

相关内容

  • 没有找到相关文章

最新更新