Además de dar significado al código se puede reutilizar el código dentro de los métodos.
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 !!
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
El resultado es el mismo sin paréntesis, se pueden omitir dependiendo del caso.
decir("Feliz Año Nuevo!!")
decir "Feliz Año Nuevo!!"
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
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)
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
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" })
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
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]
Jorge García
Fullstack developer