Ruby Language Array e l'operatore splat (*)


Esempio

L'operatore * può essere utilizzato per decomprimere variabili e array in modo che possano essere passati come singoli argomenti a un metodo.

Questo può essere usato per racchiudere un singolo oggetto in una matrice, se non lo è già:

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)
#> []

Nell'esempio precedente, il metodo wrap_in_array accetta un argomento, value .

Se value è una Array , i suoi elementi vengono decompressi e viene creato un nuovo array contenente tali elementi.

Se value è un singolo oggetto, viene creato un nuovo array contenente quel singolo oggetto.

Se il value è nil , viene restituito un array vuoto.

L'operatore splat è particolarmente utile se usato come argomento nei metodi in alcuni casi. Ad esempio, consente di gestire nil , valori singoli e matrici in modo coerente:

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