1

我刚刚在 vala 中尝试了以下操作,但断言失败。

int[] x = {1,2};
int[] y = {1,2};
assert( x == y );

我想 Vala 比较的是 x 和 y 的内存位置,而不是数组的内容。有没有一种简单的方法来比较两个数组而不必在 vala 中循环它们?

4

1 回答 1

2

生成的 C 代码确实比较了数组指针:

g_assert (x == y);

struct正在被深入比较,因为它们被认为是“价值”类型。数组是一种“引用”类型,当您进行赋值或函数调用时,它不会被深度复制(它不在堆栈上)。

实际上,您必须遍历元素。

对比较数组和集合的支持可能值得在Gee中添加

于 2010-06-25T10:47:07.277 回答