检查多维数组是否为空(Vala)

Check if a multi-dimensional array is empty (Vala)

如果我有一个像 string[,] empty = {{}}; 这样的数组并检查它的长度,我会得到一个 int[]。如果我尝试 apps.length.length 它似乎一直有效,直到我比较或打印它然后我得到 unsupported use of length field of multi-dimensional array。所以我不知道如何检查这个数组中是否有任何项目。

vala 中的多维数组不是数组的数组。例如,这将是一个编译器错误:

int[,] d = {{2, 4, 6, 8},
            {3, 5, 7, 9, 15},
            {1, 3, 5, 7}};

编译器需要 4 个元素,但在第二个初始化器中给出了 5 个元素。

多维数组的长度方法将为您提供维度的大小:

string[,] arr = {{}};
    
int len1 = arr.length[0];
int len2 = arr.length[1];
    
stdout.printf(@"$len1, $len2\n");

这会输出 1、0,因为二维数组在第一维扩展了一个元素,在第二维扩展了零个元素。

所以在上面的例子中数组不是空的。它包含 1 行 0 列。您可以添加额外的行,但这些行也必须有 0 列。