hashAll статический метод
- @Since("2.14")
Создает объединенный хеш-код для последовательности объектов.
Хеш-код вычисляется для элементов в objects, даже если они null, путем численного объединения Object.hashCode каждого элемента в порядке итерации.
Результат hashAll([o]) не является o.hashCode.
Пример:
class SomeObject {
final List<String> path;
SomeObject(this.path);
bool operator ==(Object other) {
if (other is SomeObject) {
if (path.length != other.path.length) return false;
for (int i = 0; i < path.length; i++) {
if (path[i] != other.path[i]) return false;
}
return true;
}
return false;
}
int get hashCode => Object.hashAll(path);
} Вычисленное значение будет одинаковым при повторном вызове функции с объектами, имеющими те же хеш-коды в том же порядке в ходе выполнения одной программы.
Хеш-значение, создаваемое этой функцией, не гарантированно остается неизменным при разных запусках одной и той же программы или при выполнении кода в разных изолятах одной программы. Используемый точный алгоритм может различаться на разных платформах или в разных версиях библиотек платформы, а также зависеть от значений, которые меняются при каждом выполнении программы.
Реализация
@Since("2.14")
static int hashAll(Iterable<Object?> objects) {
int hash = _hashSeed;
for (var object in objects) {
hash = SystemHash.combine(hash, object.hashCode);
}
return SystemHash.finish(hash);
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/Object/hashAll.html