28 - Métodos: con parámetros con valor por defecto

En Ruby se pueden definir parámetros y asignarles un dato en la misma cabecera del método. Luego cuando llamamos al método podemos o no enviarle un valor al parámetro.

Los parámetros por defecto nos permiten crear métodos más flexibles y que se pueden emplear en distintas circunstancias.

Problema 1:

Confeccionar un método que reciba un String como parámetro y en forma opcional un segundo String con un caracter. El método debe mostrar el String subrayado con el caracter que indica el segundo parámetro.

Programa: ejercicio123.rb

def titulo_subrayado(titulo, caracter="*")
  puts titulo
  puts caracter * titulo.length
end

# bloque principal

titulo_subrayado "Sistema de Administracion"
titulo_subrayado "Ventas", "-"

Cuando ejecutamos esta aplicación podemos observar el siguiente resultado:

parámetros por defecto en Ruby

Lo primero importante en notar que la llamada al método litulo_subrayado la podemos hacer enviándole un dato o dos datos:

titulo_subrayado "Sistema de Administracion"
titulo_subrayado "Ventas", "-"

Esto no podría ser correcto si no utilizamos una sintaxis especial cuando declaramos los parámetros del método:

def titulo_subrayado(titulo, caracter="*")
  puts titulo
  puts caracter * titulo.length
end

Como vemos el parámetro caracter tiene una asignación de un valor por defecto para los casos que llamamos al método con un solo parámetro.

Cuando lo llamamos al método titulo_subrayado con un solo parámetro luego el parámetro caracter almacena el valor "*". Si llamamos al método y le pasamos dos parámetros en nuestro ejemplo caracter almacena el String "-"

El algoritmo del método es muy sencillo, imprimimos el primer parámetro:

  puts titulo

Para mostrar subrayado el titulo procedemos a imprimir el caracter del segundo parámetro tantas veces como caracteres tenga el String del titulo. Utilizamos el método length de la clase String para conocer la cantidad de caracteres del título:

  puts caracter * titulo.length

Problema propuesto

  • Confeccionar un método que reciba entre 2 y 5 enteros. El mismo nos debe retornar la suma de dichos valores. Debe tener tres parámetros por defecto.
Solución
ejercicio124.rb

def sumar(v1, v2, v3=0, v4=0, v5=0)
  v1 + v2 + v3 + v4 + v5
end

# bloque principal

print "La suma de 5 + 6 = "
puts sumar(5,6)
print "La suma de 1 + 2 + 3 = "
puts sumar(1,2,3)
print "La suma de 1 + 2 + 3 + 4 + 5 = "
x = sumar 1, 2, 3, 4, 5
puts x