2009-05-27 11 views
19

Sto leggendo un documento che parla di un metodo che ha un ricevitore. Cos'è un ricevitore?In Ruby, a cosa si riferisce il "destinatario"?

+1

Mi chiedevo se fosse un termine ispirato al football americano. –

+0

La nuova idea che ho ricevuto da Ruby è che la programmazione OO è come una sorta di messaggio che passa. – Alex

risposta

18

In Ruby (e in altri linguaggi che traggono ispirazione da SmallTalk) gli oggetti vengono considerati come l'invio e la ricezione di "messaggi".

In Ruby, oggetto, la classe base di tutto ciò, ha un metodo di invio: Object.send Per esempio:

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

In entrambi i casi k è la ricevente del 'ciao' messaggio.

+0

"k.send: hello" è effettivamente un modo sintatticamente valido per chiamare "k.hello" in Ruby? – lorz

+3

Tu dici che k è il ricevitore. Allora, perché diciamo "k.send: ciao" invece di "k.receive: ciao"? * Suona * come k è il mittente piuttosto che il ricevitore. – lorz

+0

Poiché si sta inviando TO k e non si riceve TO k. Quest'ultima opzione ha poco senso. ;) –

6

l'oggetto prima del.

pensare di chiamare un metodo x.y come dire "invia istruzione y all'oggetto x".

è il modo di pensare in smalltalk, che ti sarà utile per ottenere alcune delle funzionalità più avanzate di Ruby.

6

Nella terminologia Smalltalk originale, i metodi su "oggetti" venivano invece definiti come messaggi agli oggetti (ad esempio, non si chiamava un metodo sull'oggetto foo, si inviava all'oggetto un messaggio). Quindi foo.blah sta inviando il messaggio "blah", che l'oggetto "foo" sta ricevendo; "foo" è il destinatario di "blah".

Problemi correlati