【发布时间】:2026-01-23 05:45:01
【问题描述】:
如果我有一个像string[,] empty = {{}}; 这样的数组并检查它的长度,我会得到一个int[]。如果我尝试apps.length.length,它似乎可以工作,直到我比较或打印它,然后我得到unsupported use of length field of multi-dimensional array。所以我不知道如何检查这个数组中是否有任何项目。
【问题讨论】:
标签: vala
如果我有一个像string[,] empty = {{}}; 这样的数组并检查它的长度,我会得到一个int[]。如果我尝试apps.length.length,它似乎可以工作,直到我比较或打印它,然后我得到unsupported use of length field of multi-dimensional array。所以我不知道如何检查这个数组中是否有任何项目。
【问题讨论】:
标签: vala
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 列。
【讨论】: