Ruby Language Les tableaux et l'opérateur splat (*)


Exemple

L'opérateur * peut être utilisé pour décompresser les variables et les tableaux afin qu'ils puissent être transmis en tant qu'arguments individuels à une méthode.

Cela peut être utilisé pour envelopper un objet unique dans un tableau s'il ne l'est pas déjà:

def wrap_in_array(value)
  [*value]
end

wrap_in_array(1)
#> [1]

wrap_in_array([1, 2, 3])
#> [1, 2, 3]

wrap_in_array(nil)
#> []

Dans l'exemple ci-dessus, la méthode wrap_in_array accepte un argument, value .

Si value est un Array , ses éléments sont décompressés et un nouveau tableau contenant ces éléments est créé.

Si value est un objet unique, un nouveau tableau contenant cet objet unique est créé.

Si value est nil , un tableau vide est renvoyé.

L'opérateur splat est particulièrement utile lorsqu'il est utilisé comme argument dans les méthodes dans certains cas. Par exemple, il permet nil , des valeurs uniques et des tableaux à traiter de manière cohérente:

def list(*values)
  values.each do |value|
    # do something with value
    puts value
  end
end

list(100)
#> 100

list([100, 200])
#> 100
#> 200

list(nil)
# nothing is outputted