Spec-Zone.ru › Dart 2

dart:core

hashAll статический метод

  1. @Since("2.14")
int hashAll(
  1. Iterable<Object?> objects
)

Создает объединенный хеш-код для последовательности объектов.

Хеш-код вычисляется для элементов в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API