我想測驗 2 個物件(同一類的 2 個不同實體)是否具有所有相同的屬性值;
(即。看看它們是否在邏輯上等價)。
我不想只檢查它們是否是完全相同的物件(像這樣)。
而且我不想使用Equatable 包,只是因為我不想將我的屬性標記為final.
我想要的本質上是對 2 個物件的所有屬性進行簡單的深入比較。
uj5u.com熱心網友回復:
我相信您需要覆寫類中的兩個方法來執行自定義比較。
- 該
==運營商 - 該
hashCode吸氣
例如:
class MyObj {
String name;
MyObj(this.name);
@override
bool operator ==(Object o) {
if (o is MyObj && o.runtimeType == runtimeType) {
if (o.name == name) {
return true;
}
}
return false;
}
@override
int get hashCode => name.hashCode;
}
測驗這個:
void main() {
MyObj objA = MyObj('billy');
MyObj objB = MyObj('bob');
MyObj objC = MyObj('billy');
print('object A == object B? ${objA == objB}');
print('object A == object C? ${objA == objC}');
}
應該產生:
object A == object B? false
object A == object C? true
要覆寫hashCode多個屬性,請查看此討論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315566.html
