Métodos en Ruby

DEFINICIÓN DE MÉTODOS

El nombre deberá empezar por minúsculas.

Si el método actúa como:

–> consulta –> ? al final del nombre –> Ejemplo: is_valid?

–> peligrosos  o modifican al receptor–> ! al final del nombre –> Ejemplo: chop! (modifica al receptor)

–> asignación –> = al final del nombre –> Ejemplo: apellido=

PARÁMETROS

Si el método no acepta ningún parámetro solo ponemos el nombre del método.

def saludar
  print "Introduce tu nombre: "
  nombre = gets.chomp
  puts "Hola #{nombre}. Buenos dias!"
end

saludar

 

Si le mandamos parámetros por convención (aunque funciona sin paréntesis también), si ponemos los paréntesis.

def saludar(parametro)
  puts "Hola #{parametro}. Buenos dias!"
end

saludar("Ruben")

 

Un ejemplo más completo

def saludar(parametro, saludo)
  puts "Hola #{parametro}. #{saludo}!"
end

print "Introduce tu nombre: "
nombre = gets.chomp
saludar(nombre, "Buenos dias")

PARÁMETROS POR DEFECTO

Se le puede especificar parámetros por defecto a la función si no recibiera en la invocación.

def saludar(saludo="Hola", nombre="usuari@")
  puts "#{saludo} #{nombre}!"
end


saludar  #Hola usuari@!
saludar("Que paso","Antonio") #Que paso Antonio!

 

…proc &

 

Metodo con Return

def sumar(primerNumero, segundoNumero)
  return primerNumero + segundoNumero
end

suma = sumar(5, 2)

puts "El resultado de la suma es #{suma}"

Devolucion de varios parametros

def get_personal_data
  return "Ruben","Tejera","Cordero","Calle El Medano","35010"
end


puts get_personal_data[0]  # Ruben
puts get_personal_data[1]  # Tejera

 

Lista de Argumentos de Longitud Variable, Splat Operator

Con el * decimos que nos pueden llegar uno o varios parametros, los tratamos como un array.

saludar("Hey!!","Ruben","Carlos","Cristian","Jorge")

def saludar(saludo,*personas)
  personas.each do |persona|
    puts "#{mensaje} #{persona}, ¡Bienvenido!"
  end
end

#Resultado:
# Hey!! Ruben, ¡Bienvenido!
# Hey!! Carlos, ¡Bienvenido!
# Hey!! Cristian, ¡Bienvenido!
# Hey!! Jorge, ¡Bienvenido!

 

def saludar(saludo, *nombre)
  puts "#{saludo} #{nombre.join(", ")}!"
end


saludar("Que paso","Antonio","Pepe", "Juan") # Que paso Antonio, Pepe, Juan!

 

def saludar(mensaje, *personas)
  personas.each do |persona|
    puts "#{mensaje} #{persona}, ¡Bienvenido!"
  end
end

saludar("Hey!!",["Ruben","Carlos","Cristian","Jorge"],"pepe")

#RESULT:
#Hey!! ["Ruben", "Carlos", "Cristian", "Jorge"], ¡Bienvenido!
#Hey!! pepe, ¡Bienvenido!

 

 

def saludar(mensaje, *personas)
  personas.each do |persona|
    puts "#{mensaje} #{persona}, ¡Bienvenido!"
  end
end

saludar("Hey!!",*["Ruben","Carlos","Cristian","Jorge"],"pepe")

#RESULT:
# Hey!! Ruben, ¡Bienvenido!
# Hey!! Carlos, ¡Bienvenido!
# Hey!! Cristian, ¡Bienvenido!
# Hey!! Jorge, ¡Bienvenido!
# Hey!! Pepe, ¡Bienvenido!