Я просто попробовал следующее в vala и сбои утверждения.
int[] x = {1,2};
int[] y = {1,2};
assert( x == y );
Я предполагаю, что Vala сравнивает ячейки памяти X и Y вместо содержания массивов. Существует ли простой способ сравнить два массива, не имея необходимость циклично выполняться хотя их в vala?
Сгенерированный код C действительно сравнивает указатели на массивы:
g_assert (x == y);
struct
глубоко сравниваются, потому что они считаются типом «значения». Массив - это своего рода «ссылочный» тип, он не копируется глубоко, когда вы выполняете присваивание или вызов функции (его нет в стеке).
Действительно, вам придется перебирать элементы.
Возможно, стоит добавить поддержку сравнения массивов и коллекций в Ну и дела