检查多维数组是否为空(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 列。
如果我有一个像 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 列。