Otra variante en la declaración de un método en Ruby es la definición de una cantidad variable de parámetros.
Para definir una cantidad variable de parámetros debemos anteceder el caracter asterísco (*) al parámetro del método (operador splat)
Confeccionar un método que reciba n enteros (siendo n = 0,1,2,3,4,5,6 etc.) valores enteros, retornar la suma de dichos parámetros.
def sumar(*datos) suma = 0 datos.each {|elemento| suma = suma + elemento} return suma end # bloque principal print "La suma de 1+2=" puts sumar 1, 2 print "La suma de 1+2+3+4=" puts sumar 1, 2, 3, 4 print "La suma de 1+2+3+4+5+6+7+8+9+10=" puts sumar 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
En Ruby debemos anteceder el caracter * al nombre del parámetro, con esto logramos que pueda recibir una cantidad variable de datos que se almacenan en un arreglo.
def sumar(*datos) suma = 0 datos.each {|elemento| suma = suma + elemento} return suma end
Como se trata de un arreglo procedemos a sumar sus elementos iterando con el método each.
Cuando llamamos al método sumar podemos hacerlo enviando una cantidad variable de datos:
puts sumar 1, 2
Podemos llamar al método enviando 4 parámetros:
puts sumar 1, 2, 3, 4
Y en general podemos llamar al método enviando cualquier cantidad de enteros:
puts sumar 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Se puede utilizar el operador splat cuando llamamos un método y en este caso tiene por objetivo descomponer un Array:
def sumar(x1, x2) x1 + x2 end # bloque principal arreglo = [10, 20] puts sumar *arreglo
En este ejemplo el método sumar debe recibir dos datos. Mediante el operador splat cuando llamamos al método sumar desde el bloque principal descomponemos el Array:
arreglo = [10, 20] puts sumar *arreglo
ejercicio126.rb def cantidad_mayores18(*edades) cant=0 edades.each do |edad| if edad >=18 cant = cant + 1 end end return cant end # bloque principal puts "La cantidad de personas mayores a 18 son: #{cantidad_mayores18(23,6,8,19,24)}"