当您可以将const
添加到构造函数中时,为什么要在比较过程中将operator==
或一些helper包添加到状态/事件中呢?
abstract class PersonBase {
const PersonBase();
}
class Person extends PersonBase {
const Person({required this.name});
final String name;
}
abstract class PersonBase {}
class Person extends PersonBase {
Person({required this.name});
final String name;
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is Person &&
other.name == name;
}
@override
int get hashCode => name.hashCode;
}
2条答案
按热度按时间djmepvbi1#
const关键字的实际用途是作为一个指示符,告诉编译器,对于这个变量,它在代码的生命周期中永远不会改变,所以只创建它的一个副本,只要提到它,就引用回你已经创建的副本,不要创建新的副本。
Dart重用与
const
相同的变量引用,如果已经以相同的方式引用过的话。这和java中的Literal Pool
类似。enxuqcxy2#
简单地说,
const
关键字用于指定Person
类是不可变的,并且可以在编译时构造,operator==
方法用于在您提供的代码示例中比较Person示例是否相等。