Forum: Italian Ruby user group capire da quale metodo e' chiamato un metodo.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
09f38ff69d24a477bd0bc340eeeda432?d=identicon&s=25 Mauro Sanna (Guest)
on 2007-05-17 13:47
(Received via mailing list)
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'?
D8fb06dfc08a477ecb0a76ffdbff3475?d=identicon&s=25 Chiaro Scuro (chiaroscuro)
on 2007-05-17 14:05
(Received via mailing list)
On 5/17/07, Mauro Sanna <mauro.sanna@comune.cagliari.it> 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
C01072ccffb1f2d23f8b5f686e5b106a?d=identicon&s=25 gabriele renzi (Guest)
on 2007-05-17 15:55
(Received via mailing list)
--- Mauro Sanna <mauro.sanna@comune.cagliari.it>
> 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 :/


      ___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.
http://uk.answers.yahoo.com/
09f38ff69d24a477bd0bc340eeeda432?d=identicon&s=25 Mauro Sanna (Guest)
on 2007-05-18 08:52
(Received via mailing list)
Il giorno gio, 17/05/2007 alle 14.03 +0200, chiaro scuro ha scritto:
> On 5/17/07, Mauro Sanna <mauro.sanna@comune.cagliari.it> 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?
652a08873b41cf44e456b54927c097a5?d=identicon&s=25 Giovanni Corriga (Guest)
on 2007-05-18 09:11
(Received via mailing list)
Il giorno ven, 18/05/2007 alle 08.51 +0200, Mauro Sanna 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
09f38ff69d24a477bd0bc340eeeda432?d=identicon&s=25 Mauro Sanna (Guest)
on 2007-05-18 09:55
(Received via mailing list)
> def sendMailOnInsert
> terza azione (ad esempio, modifica), devi solo aggiungere un metodo
> #sendMailOnUpdate senza bisogno di modificare #sendMail.

Ottimo, perfetto!! Grazie mille.
9daa9b4739a6e95078cbcfb624d7bb8e?d=identicon&s=25 David Welton (Guest)
on 2007-05-18 10:09
(Received via mailing list)
> Oltretutto caller restituisce stringhe che dovrai
> parsare a colpi di regex, che imo è uno dei più grassi
> difetti di ruby :/

Non me ne ero accorto... hai ragione, fa un po' schifo:-/

--
David N. Welton
 - http://www.dedasys.com/davidw/

Linux, Open Source Consulting
 - http://www.dedasys.com/
This topic is locked and can not be replied to.