hash_and_equals
如果重写了 ==
,则始终重写 hashCode
。
此规则从 Dart 2.0 开始可用。
此规则提供了一个 快速修复。
详情
#请在重写 ==
时重写 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.5.3。页面最后更新于 2024-07-03。 查看源代码 或 报告问题。