From 89f80b4edd7e989d80e6ab3381f94de61d4f96c6 Mon Sep 17 00:00:00 2001 From: Pierre Ambroise <74421318+Fan2Shrek@users.noreply.github.com> Date: Sat, 10 Aug 2024 21:36:35 +0200 Subject: [PATCH] Translate Ds\Hashable (#1160) --- reference/ds/ds/hashable/equals.xml | 85 +++++++++++++++++++ reference/ds/ds/hashable/hash.xml | 127 ++++++++++++++++++++++++++++ 2 files changed, 212 insertions(+) create mode 100644 reference/ds/ds/hashable/equals.xml create mode 100644 reference/ds/ds/hashable/hash.xml diff --git a/reference/ds/ds/hashable/equals.xml b/reference/ds/ds/hashable/equals.xml new file mode 100644 index 0000000000..290dc556d9 --- /dev/null +++ b/reference/ds/ds/hashable/equals.xml @@ -0,0 +1,85 @@ + + + + + + Ds\Hashable::equals + Détermine si un objet est égal à l'instance actuelle + + + + &reftitle.description; + + abstract public boolDs\Hashable::equals + objectobj + + + Détermine si un autre objet est égal à l'instance actuelle. + + + + Cette méthode permet d'utiliser des objets comme clés dans des structures telles que + Ds\Map et Ds\Set, ou toute autre + structure de recherche qui respecte cette interface. + + + + + Il est garanti que obj est une instance de la même classe. + + + + + + Il est important que les objets qui sont égaux aient également la même valeur de hachage. + Voir Ds\Hashable::hash. + + + + + + + &reftitle.parameters; + + + obj + + + L'objet à comparer à l'instance actuelle, qui est toujours une instance de + la même classe. + + + + + + + + &reftitle.returnvalues; + + &true; si les objets sont égaux, sinon &false;. + + + + + + + diff --git a/reference/ds/ds/hashable/hash.xml b/reference/ds/ds/hashable/hash.xml new file mode 100644 index 0000000000..54a10a2241 --- /dev/null +++ b/reference/ds/ds/hashable/hash.xml @@ -0,0 +1,127 @@ + + + + + + Ds\Hashable::hash + Renvoie une valeur scalaire à utiliser comme valeur de hachage + + + + &reftitle.description; + + abstract public mixedDs\Hashable::hash + + + + Renvoie une valeur scalaire à utiliser comme valeur de hachage des objets. + + + Tant que la valeur de hachage ne définit pas l'égalité, tous les objets qui sont égaux selon Ds\Hashable::equals + doivent avoir la même valeur de hachage. Les valeurs de hachage des objets égaux n'ont pas à être uniques, par exemple + vous pourriez simplement retourner &true; pour tous les objets et rien ne se casserait - la seule + implication serait que les tables de hachage se transformeraient en listes chaînées car tous + vos objets seront hachés dans le même seau. Il est donc très important + que vous choisissiez une bonne valeur de hachage, telle qu'un ID ou une adresse e-mail. + + + + Cette méthode permet d'utiliser des objets comme clés dans des structures telles que + Ds\Map et Ds\Set, ou toute autre + structure de recherche qui respecte cette interface. + + + + + Ne choisissez pas une valeur qui pourrait changer dans l'objet, comme une propriété publique. + Les recherches dans les tables de hachage échoueraient car le hachage a changé. + + + + + + Tous les objets qui sont égaux doivent avoir la même valeur de hachage. + + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Une valeur scalaire à utiliser comme valeur de hachage de cet objet. + + + + + &reftitle.examples; + + Exemple de <function>Ds\Hashable::hash</function> + +name = $name; + $this->email = $email; + } + + /** + * Doit renvoyer la même valeur pour tous les objets égaux, mais n'a pas à + * être unique. Cette valeur ne sera pas utilisée pour déterminer l'égalité. + */ + public function hash() + { + return $this->email; + } + + /** + * Détermine l'égalité, généralement lors d'une recherche dans une table de hachage pour déterminer + * si la clé du seau correspond à la clé de recherche. Le hachage doit être égal si + * les objets sont égaux, sinon cette détermination ne serait pas atteinte. + */ + public function equals($obj): bool + { + return $this->name === $obj->name + && $this->email === $obj->email; + } +} +?> +]]> + + + + + + + +