如何比较 Vala 中的对象?
How to compare objects in Vala?
我正在使用 Gee.ArrayList 和自己的 class 作为内容。我想使用 ArrayList 的“contains”方法,但我真的不知道如何在我的 class 中设置一个 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
有人知道吗?
当您创建 ArrayList 时,constructor 使用您的相等比较器。你可以这样做:
var t = new Gee.ArrayList<Test>(Test.equals);
并且包含的内容应该如您所愿。
我正在使用 Gee.ArrayList 和自己的 class 作为内容。我想使用 ArrayList 的“contains”方法,但我真的不知道如何在我的 class 中设置一个 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
有人知道吗?
当您创建 ArrayList 时,constructor 使用您的相等比较器。你可以这样做:
var t = new Gee.ArrayList<Test>(Test.equals);
并且包含的内容应该如您所愿。