Capire da quale metodo e' chiamato un metodo


#1

Ho i metodi:
def inserisci
sendMail
end

def elimina
sendMail
end

ecc…

def sendMail

end

sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?


#2

On 5/17/07, Mauro S. removed_email_address@domain.invalid wrote:

sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?

passargli un parametro che gli permetta di decidere?
forse mi devi spiegare meglio il problema, con un caso concreto


#3

— Mauro S. removed_email_address@domain.invalid

sendMail deve eseguire delle operazioni differenti a
seconda che venga
chiamata da inserisci o da elimina o da altri
metodi.
Come e’ possibile determinare cio’?

usando Kernel::caller(), ma imo è una soluzione
sporchina, non è meglio un approccio classico dove
foo() chiama sendmail_foo() e bar chiama
sendmail_bar()?

Oltretutto caller restituisce stringhe che dovrai
parsare a colpi di regex, che imo è uno dei più grassi
difetti di ruby :confused:

  ___________________________________________________________

Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/


#4

Il giorno ven, 18/05/2007 alle 08.51 +0200, Mauro S. ha scritto:

come determinare da quale metodo all’interno della classe e’ chiamato il
metodo sendMail?

Non ti conviene procedere in questa maniera. Quello che ti conviene fare
è creare un metodo #sendMail che contenga la logica comune ai due casi,
poi due metodi #sendMailOnInsert e #sendMailOnDelete che contengono la
logica specifica per i due case e si occupano di chiamare #sendMail. In
altre parole:

def sendMail
#…
end

def sendMailOnInsert
#…
sendMail
end

def sendMailOnDelete
#…
sendMail
end

Questo modo di procedere ha il vantaggio che, se devi aggiungere una
terza azione (ad esempio, modifica), devi solo aggiungere un metodo
#sendMailOnUpdate senza bisogno di modificare #sendMail.

Giovanni


#5

Il giorno gio, 17/05/2007 alle 14.03 +0200, chiaro scuro ha scritto:

On 5/17/07, Mauro S. removed_email_address@domain.invalid wrote:

sendMail deve eseguire delle operazioni differenti a seconda che venga
chiamata da inserisci o da elimina o da altri metodi.
Come e’ possibile determinare cio’?

passargli un parametro che gli permetta di decidere?
forse mi devi spiegare meglio il problema, con un caso concreto

Ho una classe con i metodi:

def inserisci


sendMail
end

def elimina


sendMail
end

ecc…

def sendMail
se chiamata da inserisci fai: …
se chiamata da elimina fai: …

end

come determinare da quale metodo all’interno della classe e’ chiamato il
metodo sendMail?


#6

Oltretutto caller restituisce stringhe che dovrai
parsare a colpi di regex, che imo è uno dei più grassi
difetti di ruby :confused:

Non me ne ero accorto… hai ragione, fa un po’ schifo:-/


David N. Welton

Linux, Open Source Consulting


#7

def sendMailOnInsert
terza azione (ad esempio, modifica), devi solo aggiungere un metodo
#sendMailOnUpdate senza bisogno di modificare #sendMail.

Ottimo, perfetto!! Grazie mille.