Los metodos en Ruby son como las funciones matematicas: metes valores de entrada, hace sus calculos internos y te devulve una respuesta.
Para hacer esto tenemos que pasarle a los métodos unos argumentos, esto es una lista de variables despues del nombre del método. Para ser mas exactos cuando definimos estas variables en el metodo lo llamamos parámetros y cuando pasamos las variables en una llamada al metodo lo llamamos argumentos.
Digamos que le queremos enseñara a un objeto como pasar de metros a pies. Puedes hacerlo enseñandole como hacer la conversión con un método.
def obj.meters_to_foots(meters)
meters * 3.28
end
El metodo obj.meters_to_foots tiene un parámetro esto significa que solo puede tomar un argumento. Cuando proveemos un argumento:
obj.meters_to_foots(4)
el resultado es:
# 13.12
# nil
Como puedes ver hay una correspondencia entre la sintaxis de la definición del método con sus parámetros y el mensaje con su argumento, en ambos lados son opcionales por lo que puedes tambien definirlo y llamarlos de esta manera:
def obj.meters_to_foots meters
y así:
obj.meters_to_foots(4)
Pero no son siempre opcionales, sobretodo cuando tenemos varios parametros en un método, por lo que te recomiendo que los uses siempre, excepto en conveciones y casos en los que son comumente omitidos.
def hello_world()
puts 'Hello world'
end
En este caso no se usa ningún parámetro, lo mejor es omitirlo:
def hello_world
puts 'Hello world'
end
Al final del método se devuelve por defecto el último valor evaluado. Por ejemplo en el método que hemos escrito:
def obj.meters_to_foots(meters)
meters * 3.28
end
el último valor evaluado es: meters * 3.28. Por lo que al ser el último valor es el que se devuelve en su llamada.
puts obj.meters_to_foots(4)
# 13.12
# nil
También puedes devolverlo escribiendo explicitamente en el codigo la palabra return pero esto solo hará falta cuando tengas que devolver un valor en un parte del código concreta o devolver varios valores. Ya uses return o no un método siempre devolvera un valor.