2009-05-27 11 views
19

Estoy leyendo un documento que habla sobre un método que tiene un receptor. ¿Qué es un receptor?En Ruby, ¿a qué se refiere el "receptor"?

+1

Me preguntaba si era un término inspirado en el fútbol americano. –

+0

La nueva idea que obtuve de Ruby es que la programación OO es como una especie de mensaje que pasa. – Alex

Respuesta

18

En Ruby (y en otros idiomas que se inspiran en SmallTalk) se considera que los objetos envían y reciben 'mensajes'.

En Ruby, objeto, la clase base de todo, tiene un método de envío: Object.send Por ejemplo:

class Klass 
    def hello 
    "Hello!" 
    end 
end 
k = Klass.new 
k.send :hello #=> "Hello" 
k.hello   #=> "Hello" 

En ambos de estos casos k es la receptor de la 'hola' mensaje.

+0

¿Es realmente "k.send: hello" una manera sintácticamente válida de llamar a "k.hello" en Ruby? – lorz

+3

Usted dice que k es el receptor. Entonces, ¿por qué decimos "k.send: hola" en lugar de "k.receive: hola"? * Suena * como k es el emisor en lugar del receptor. – lorz

+0

Porque está enviando TO k y no recibe TO k. Esta última opción tiene poco sentido. ;) –

6

el objeto antes de.

pensar en llamar a un método x.y como diciendo "enviar instrucción y al objeto x".

es la forma de pensar smalltalk, te servirá bien a medida que llegas a algunas de las características más avanzadas de Ruby.

6

En la terminología original de Smalltalk, los métodos sobre "objetos" se denominaban en cambio mensajes a los objetos (es decir, no se llamaba un método en el objeto foo, se enviaba un mensaje al objeto foo). Entonces foo.blah está enviando el mensaje "bla", que el objeto "foo" está recibiendo; "foo" es el receptor de "bla".

Cuestiones relacionadas