Как сравнивать объекты в Вала?

Я использую Gee.ArrayList с собственным классом для контента. Я хочу использовать метод "contains" объекта ArrayList, но я действительно не знаю, как настроить метод equals в моем классе, поэтому ArrayList использует его, чтобы узнать, находится ли объект в ArrayList или нет.

Пример:

class Test : GLib.Object {
    public int number;

    public Test(int n) {
        number = n;
    }
    public bool equals (Test other) {
        if (number == other.number) return true;
        return false;
    }
}

Затем в другом файле:

var t = new Gee.ArrayList<Test>();
var n1 = new Test(3);
var n2 = new Test(3);
t.add(n1);
t.contains(n2); // returns false, but I want it to return true

Кто-нибудь знает это? Заранее спасибо!

1 ответ

Решение

Когда вы создаете ArrayList, конструктор берет ваш компаратор равенства. Ты можешь сделать:

var t = new Gee.ArrayList<Test>(Test.equals);

и содержимое должно работать по вашему желанию.

Другие вопросы по тегам