Operador Splat

1. Exemple mètode utilizant una llista

def hola_gente(personas)
  personas.each {|personas| puts "Hola #{personas}"}
end


hola_gente("Uriel","Coco")

Output

Hola Uriel
Hola Coco

2. Mètode splat

Convertim la llista en strings.

def hola_gente(*personas)
  personas.each {|persona| puts "Hola #{persona}"}
end


hola_gente "Uriel" , "Coco"

Output

Hola Uriel
Hola Coco

Funciona si posem qualsevol valor.

def hola_gente(*personas)
  personas.each {|persona| puts "Hola #{persona}"}
end


hola_gente 23

Output

23

El operador splat diu “passam qualsevol valor que els interpretaré com una llista”.

Així, doncs, amb aquest mètode se li pot passar qualsevol tipus d’argument, que els rebrà com una llista.

def hola_gente(*personas)
  personas.each {|persona| puts "Hola #{persona}"}
end


hola_gente 23, "Uriel", "Coco",":(",":)"

Output

Hola 23
Hola Uriel
Hola Coco
Hola :(
Hola :)

3. Combinant spalt operator amb altres arguments

def hola_gente(menaje,*personas)
  personas.each {|persona| puts "#{mensaje} #{persona}"}
end


hola_gente "Hey hola", "Uriel", "Coco",":(",":)"

Output

Hey hola Uriel
Hey hola Coco
Hey hola :(
Hey hola :)

4. Utilitzant el * converteix una llista en una llista de paràmetres

Imaginem que tots els nom els tenim dins d’una llista.

Splat operator els veu com un sol argument, perquè estan en una llista.

Així:

def hola_gente(mensaje,*personas)
  personas.each {|persona| puts "#{mensaje} #{persona}"}
end

nombres = ["Uriel", "Coco",":(",":)"]


hola_gente "Hey hola", nombres

Output

Hey hola ["Uriel", "Coco", ":(", ":)"]

Soles ho mana executar una vegada.

5. Convertir una llista a una llista d’arguments

Utilitzem la mateixa sintaxi, l’asterisc, *, converteix un array en una llista de paràmetres.

def hola_gente(mensaje,*personas)
  personas.each {|persona| puts "#{mensaje} #{persona}"}
end

nombres = ["Uriel", "Coco",":(",":)"]


hola_gente "Hey hola", *nombres

Output

Hey hola Uriel
Hey hola Coco
Hey hola :(
Hey hola :)