【发布时间】:2015-06-16 12:29:10
【问题描述】:
我不明白集合如何确定两个对象何时相等。更具体地说,集合的add方法什么时候真正添加了一个新对象,什么时候不作为一个新对象,因为该对象已经在集合中?
例如,我有以下类的对象:
class Action {
final Function function;
final String description;
Action(this.function, this.description);
call() => function();
toString() => description;
}
现在我认为以下集合将包含 2 个元素,因为其中 2 个是相等的:
void main() {
Set<Action> actions = new Set()
..add(new Action(() => print("a"), "print a"))
..add(new Action(() => print("a"), "print a"))
..add(new Action(() => print("b"), "print b"));
}
但是,这个集合包含 3 个Action 对象。请参阅demo。如何确保在集合中相等的对象被视为相等?
【问题讨论】:
标签: dart