在此 Flutter Redux 示例中,哈希码必须做什么
What does the hash code have to do in this Flutter Redux example
我在看this example
@immutable
class UserState {
final bool isLoading;
final LoginResponse user;
UserState({
@required this.isLoading,
@required this.user,
});
factory UserState.initial() {
return new UserState(isLoading: false, user: null);
}
UserState copyWith({bool isLoading, LoginResponse user}) {
return new UserState(
isLoading: isLoading ?? this.isLoading, user: user ?? this.user);
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is UserState &&
runtimeType == other.runtimeType &&
isLoading == other.isLoading &&
user == other.user;
@override
int get hashCode => isLoading.hashCode ^ user.hashCode;
}
hashCode 与此有什么关系?这有什么用途? (我已经缩短了代码,因为我在发布大部分代码时遇到了 Whosebug 错误)
谢谢
您在这里看到的是 class 覆盖 ==
运算符。
当您覆盖 ==
运算符时,应该始终覆盖 hashCode
。
任何对象的 hashCode
在使用像 HashMap 这样的散列 class 时使用,或者在将列表转换为集合时使用,这也是散列。
更多信息:
我在看this example
@immutable
class UserState {
final bool isLoading;
final LoginResponse user;
UserState({
@required this.isLoading,
@required this.user,
});
factory UserState.initial() {
return new UserState(isLoading: false, user: null);
}
UserState copyWith({bool isLoading, LoginResponse user}) {
return new UserState(
isLoading: isLoading ?? this.isLoading, user: user ?? this.user);
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is UserState &&
runtimeType == other.runtimeType &&
isLoading == other.isLoading &&
user == other.user;
@override
int get hashCode => isLoading.hashCode ^ user.hashCode;
}
hashCode 与此有什么关系?这有什么用途? (我已经缩短了代码,因为我在发布大部分代码时遇到了 Whosebug 错误)
谢谢
您在这里看到的是 class 覆盖 ==
运算符。
当您覆盖 ==
运算符时,应该始终覆盖 hashCode
。
任何对象的 hashCode
在使用像 HashMap 这样的散列 class 时使用,或者在将列表转换为集合时使用,这也是散列。
更多信息: