hash_and_equals
如果重写了 ==
,请始终重写 hashCode
。
此规则从 Dart 2.0 开始可用。
规则集: core, recommended, flutter
此规则有可用的快速修复。
详情
#应该在重写 ==
时重写 hashCode
,并且如果重写了 hashCode
,则最好重写 ==
。
Dart 中的每个对象都有一个 hashCode
。为了使通用的哈希映射实现正常工作,对象的 ==
运算符和 hashCode
属性必须保持一致。因此,当重写 ==
时,也应该重写 hashCode
以保持一致性。类似地,如果重写了 hashCode
,也应该重写 ==
。
错误示例
dart
class Bad {
final int value;
Bad(this.value);
@override
bool operator ==(Object other) => other is Bad && other.value == value;
}
正确示例
dart
class Better {
final int value;
Better(this.value);
@override
bool operator ==(Object other) =>
other is Better &&
other.runtimeType == runtimeType &&
other.value == value;
@override
int get hashCode => value.hashCode;
}
用法
#要启用 hash_and_equals
规则,请在 analysis_options.yaml
文件中的 linter > rules 下添加 hash_and_equals
analysis_options.yaml
yaml
linter:
rules:
- hash_and_equals
除非另有说明,否则本网站上的文档反映的是 Dart 3.6.0。页面上次更新于 2024-07-03。 查看源代码或报告问题。