Nel Ruby Programming Language, Capitolo 6 (secondo comma) affermano:funzioni di Ruby vs metodi
Molte lingue distinguere tra funzioni, che non hanno oggetto associato, e metodi, che sono richiamati su un ricevitore oggetto. Poiché Ruby è un linguaggio puramente orientato agli oggetti, tutti i metodi sono metodi veri e sono associati ad almeno un oggetto.
E poi nel bel mezzo del 6 ° comma:
Sia proc e lambda sono funzioni piuttosto che metodi invocati su un oggetto .
Sono un po 'confuso su queste affermazioni. Ruby è veramente puro OO e quindi non ha funzioni che non sono associate ad oggetti (se questa è una definizione valida di OO puro) o sono proc/lambdas associati all'oggetto Proc? Qual è la differenza tra funzioni e metodi in Ruby?
Qualsiasi aiuto nell'analisi e nella comprensione di questo sarebbe apprezzato.
Sì, proc e lambdas sono entrambi oggetti Proc, ma cosa significano per "funzioni anziché metodi". E qual è la distinzione? –
Significa che la frase nel mezzo del 6 ° paragrafo è imprecisa. –
La differenza è in realtà che, quasi universalmente, procs e lambda vengono usati solo per il loro metodo di chiamata associato. Nessuno memorizza metodi o valori aggiuntivi con loro. Quindi, come dice Kaptajn Kold, possiamo usarli come useremmo le funzioni del primo ordine in altre lingue, anche se sono ancora veramente degli oggetti. – rampion