如何在瓦拉中比较对象

  • 本文关键字:比较 对象 vala libgee
  • 更新时间 :
  • 英文 :


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

有人知道吗?

创建 ArrayList 时,构造函数会采用相等比较器。你可以做:

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

并且包含应该按照您想要的方式工作。

最新更新