¿Qué es un método? En la programación OO no se piensa en operar sobre los datos directamente desde el exterior de un objeto; si no que los objetos tienen algún conocimiento de cómo se debe operar sobre ellos (cuando se les pide amablemente). Podríamos decir que se pasa un mensaje al objeto y este mensaje obtiene algún tipo de acción o respuesta significativa. Esto debe ocurrir sin que tengamos necesariamente algún tipo de conocimiento o nos importe como realiza el objeto, interiormente, el trabajo. Las tareas que podemos pedir que un objeto realice (o lo que es lo mismo, los mensajes que comprende) son los métodos.
En Ruby, se llama a un método con la notación punto (como en C++ o Java). El objeto con el que nos comunicamos se nombra a la izquierda del punto.
Intuitivamente, a este objeto cadena se le está pidiendo que diga la longitud que tiene. Técnicamente, se está llamando al método length del objeto "abcdef".Otros objetos pueden hacer una interpretación un poco diferente de length. La decisión sobre cómo responder a un mensaje se hace al vuelo, durante la ejecución del programa, y la acción a tomar puede cambiar dependiendo de la variable a que se haga referencia.
ruby> foo = "abc" "abc" ruby> foo.length 3 ruby> foo = ["abcde","fghij"] ["abcde", "fghij"] ruby> foo.length 2 |
Cuando un objeto recibe un mensaje que no conoce, "salta" un error:
Por lo tanto hay que conocer qué métodos son aceptable para un objeto, aunque no se necesita saber como son procesados.Si se pasan argumentos a un método, éstos van normalmente entre paréntesis.
pero se pueden omitir, si su ausencia no provoca ambigüedad En Ruby existe una variable especial self que referencia al objeto que llama a un método. Ocurre con tanta frecuencia que por conveniencia se omite en las llamadas de un método dentro de un objeto a sus propios métodos: es igual que: Lo que conocemos tradicionalmente como llamadas a funciones es esta forma abreviada de llamar a un método a través de self. Esto hace que a Ruby se le conozca como un lenguaje orientado a objetos puro. Aún así, los métodos funcionales se comportan de una forma muy parecida a las funciones de otros lenguajes de programación en beneficio de aquellos que no asimilen que las llamadas a funciones son realmente llamadas a métodos en Ruby. Se puede hablar de funciones como si no fuesen realmente métodos de objetos, si queremos.[1] | In My Honest Opinion (En mi sincera opinión) |