如何比较Vala中的对象?

时间:2016-02-01 14:57:34

标签: arraylist equals vala gee

我正在使用一个Gee.ArrayList,它有一个自己的内容类。我想使用" contains" ArrayList的方法,但我真的不知道如何在我的类中设置equals-method,所以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 个答案:

答案 0 :(得分:2)

当您创建ArrayList时,constructor将使用您的相等比较器。你可以这样做:

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

并且包含应该按照您的意愿工作。