Ds\Set::add

(PECL ds >= 1.0.0)

Ds\Set::add — AƱade valores a la secuencia

Descripción

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

AƱade todos los valores dados al conjunto que no hayan sido ya aƱadidos.

Nota:

Los valores de tipo object son soportados. Si un objeto implementa Ds\Hashable, la igualdad serÔ determinada por la función equals del objeto. Si un objeto no implementa Ds\Hashable, los objetos deben ser referencias a la misma instancia para ser considerados iguales.

Precaución

Todas las comparaciones son estrictas (tipo y valor).

ParƔmetros

values

Los valores a aƱadir a la secuencia.

Valores devueltos

No se retorna ningĆŗn valor.

Ejemplos

Ejemplo #1 Ejemplo de Ds\Set::add() utilizando enteros

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

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

// Las comparaciones estrictas no tratarĆ­an estos valores de la misma manera que int(1)
$set->add("1");
$set->add(true);

var_dump($set);
?>

Resultado del ejemplo anterior es similar a:

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

Ejemplo #2 Ejemplo de Ds\Set::add() utilizando objetos

<?php
class HashableObject implements \Ds\Hashable
{
/**
* Un valor arbitrario a utilizar como valor de hash. No define la igualdad.
*/
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([]);

// AƱadir la misma instancia varias veces solo aƱadirƔ la primera.
$set->add($obj);
$set->add($obj);

// AƱadir varias instancias del mismo objeto aƱadirƔ todas las instancias.
$set->add(new \stdClass());
$set->add(new \stdClass());

// AƱadir varias instancias de objetos hashables iguales solo aƱadirƔ la primera.
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(2));
$set->add(new \HashableObject(2));

var_dump($set);
?>

Resultado del ejemplo anterior es similar a:

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.