Volver a la página principal
martes 6 agosto 2024
12

Cómo usar métodos en Ruby

¿Por qué es necesario usar métodos?

Además de dar significado al código se puede reutilizar el código dentro de los métodos.

DEF... END

Para definir un método se utiliza def y end, colocando el código dentro.

El nombre del método puede llevar parámetros, separados por comas si son múltiples.

Una vez definido, se llama al método usando su nombre.

def nombre_del_método(parámetro1, parámetro2)   
  código
end
def decir(palabra)
  puts "Feliz #{palabra}"   # Las cadenas se deben usar con comillas dobles para interpretar los caracteres concatenados.
end
decir("Año Nuevo!!")
# Imprime >> Feliz Año Nuevo!!
decir("2021 !!")           # Una vez definido, se puede reutilizar.
# Imprime >> Feliz 2021 !!

Parámetros y argumentos

Los parámetros son los que se incluyen después del nombre del método al definirlo.

Los argumentos son los valores que se pasan al llamar al método.

def decir(palabra)           # Parámetro
  puts "Feliz #{palabra}"  
end
decir("Año Nuevo!!")       # Argumento

Se pueden omitir los paréntesis al llamar a un método

El resultado es el mismo sin paréntesis, se pueden omitir dependiendo del caso.

decir("Feliz Año Nuevo!!")
decir "Feliz Año Nuevo!!"

Buscar primero variables, luego métodos

Si en el mismo alcance hay una variable y un método con el mismo nombre, si se omiten los paréntesis al llamar al método, se ejecutará la variable.

nombre = "Tanjirou"
def nombre
  return "Nezuko"
end
puts nombre
# Imprime >> Tanjirou
puts nombre()
# Imprime >> Nezuko

Error de parámetros y argumentos

Si los parámetros y argumentos no coinciden, ocurrirá un error de parámetros o argumentos.

def prueba(uno)
end
prueba() # El método necesita un parámetro pero no se dio ningún argumento al llamarlo.
# Imprime >> wrong number of arguments (given 0, expected 1) (ArgumentError)
def prueba()
end
prueba("uno") # El método no necesita parámetros pero se dio un argumento al llamarlo.
# Imprime >> wrong number of arguments (given 1, expected 0) (ArgumentError)

Lo mismo ocurre si hay múltiples parámetros y argumentos, se necesita que coincidan.

def prueba(uno, dos)
end
prueba("uno") # El método necesita dos parámetros pero se dio un solo argumento al llamarlo.
# Imprime >> wrong number of arguments (given 1, expected 2) (ArgumentError)
def prueba(uno)
end
prueba("uno", "dos") # El método necesita un parámetro pero se dieron dos argumentos al llamarlo.
# Imprime >> wrong number of arguments (given 2, expected 1) (ArgumentError)

Parámetros por defecto

Los métodos pueden tener parámetros por defecto, si no se pasa ningún argumento al llamarlos, se usa el parámetro por defecto. Si se pasa un argumento, se utiliza el argumento.

def decir_nombre(nombre = "Tanjirou")
  puts nombre
end
decir_nombre
# Imprime >> Tanjirou
decir_nombre("Nezuko")
# Imprime >> Nezuko

Omitir paréntesis

Se pueden omitir los paréntesis en los métodos. Si el último argumento es un Hash, se pueden omitir las llaves del Hash.

link_to "Inicio", root_path, class: "btn btn-default", method: "POST"
# Con paréntesis
link_to("Inicio", root_path, class: "btn btn-default", method: "POST")
# Con llaves en el Hash
link_to("Inicio", root_path, { class: "btn btn-default", method: "POST" })

Valores de retorno

Si un método no tiene RETURN, devuelve el resultado de la última línea ejecutada. Se puede omitir RETURN adecuadamente.

def sumar_1(n)
  n + 1       # Devuelve el resultado de n + 1
end
p sumar_1(2020)
# Imprime >> 2021
def year
  2021        # Devuelve la última línea
end
p year
# Imprime >> 2021

Signos de interrogación y exclamación

Pueden ser parte del nombre de un método, pero deben estar al final. Un signo de interrogación generalmente indica que el método devuelve un valor booleano.

def es_mayor_de_edad?(edad)
  if edad >= 18
    return true
  else
    return false
  end
end
p es_mayor_de_edad?(20)
# Imprime >> true

p es_mayor_de_edad?(16)
# Imprime >> false

El signo de exclamación indica que se debe tener cuidado, generalmente porque modifica el valor original.

a = [1, 2, 3]

p a.shuffle        # Cambia el valor temporalmente
# Imprime >> [1, 3, 2]

p a                # Valor original del array
# Imprime >> [1, 2, 3]

a = [1, 2, 3]

p a.shuffle!       # Cambia el valor y se convierte en el nuevo array
# Imprime >> [1, 3, 2]

p a                # Nuevo valor del array
# Imprime >> [1, 3, 2]
Etiquetas:
ruby
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer