Ds\Set::add

(PECL ds >= 1.0.0)

Ds\Set::addAjoute des valeurs à la séquence

Description

public Ds\Set::add(mixed ...$values): void

Ajoute toutes les valeurs données à l'ensemble qui n'ont pas déjà été ajoutées.

Note:

Les valeurs de type object sont supportées. Si un objet implémente Ds\Hashable, l'égalité sera déterminée par la fonction equals de l'objet. Si un objet n'implémente pas Ds\Hashable, les objets doivent être des références à la même instance pour être considérés comme égaux.

Attention

Toutes les comparaisons sont strictes (type et valeur).

Liste de paramètres

values

Les valeurs à ajouter à la séquence.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple de Ds\Set::add() utilisant les entiers

<?php
$set
= new \Ds\Set();

$set->add(1);
$set->add(1);
$set->add(2);
$set->add(3);

// Les comparaisons strictes ne traiteraient pas ces valeurs de la même manière que int(1)
$set->add("1");
$set->add(true);

var_dump($set);
?>

Résultat de l'exemple ci-dessus est similaire à :

object(Ds\Set)#1 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  string(1) "1"
  [4]=>
  bool(true)
}

Exemple #2 Exemple de Ds\Set::add() utilisant les objets

<?php
class HashableObject implements \Ds\Hashable
{
/**
* Une valeur arbitraire à utiliser comme valeur de hachage. Ne définit pas l'égalité.
*/
private $value;

public function
__construct($value)
{
$this->value = $value;
}

public function
hash()
{
return
$this->value;
}

public function
equals($obj): bool
{
return
$this->value === $obj->value;
}
}

$set = new \Ds\Set();

$obj = new \ArrayIterator([]);

// Ajouter la même instance plusieurs fois n'ajoutera que la première.
$set->add($obj);
$set->add($obj);

// Ajouter plusieurs instances du même objet ajoutera toutes les instances.
$set->add(new \stdClass());
$set->add(new \stdClass());

// Ajouter plusieurs instances d'objets hachables égaux n'ajoutera que la première.
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(2));
$set->add(new \HashableObject(2));

var_dump($set);
?>

Résultat de l'exemple ci-dessus est similaire à :

object(Ds\Set)#1 (5) {
  [0]=>
  object(ArrayIterator)#2 (1) {
    ["storage":"ArrayIterator":private]=>
    array(0) {
    }
  }
  [1]=>
  object(stdClass)#3 (0) {
  }
  [2]=>
  object(stdClass)#4 (0) {
  }
  [3]=>
  object(HashableObject)#5 (1) {
    ["value":"HashableObject":private]=>
    int(1)
  }
  [4]=>
  object(HashableObject)#6 (1) {
    ["value":"HashableObject":private]=>
    int(2)
  }
}
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top