Scope delle variabili

Anteponendo una @ la variabile e’ visibile da tutti i metodi all’interno
della classe.
Se volessi che una variabile sia visibile solo all’interno di un metodo
escludendo tutti gli altri?

def sendMail(from, from_alias, to, to_alias, subject, message)
msg = <<END_OF_MESSAGE
From: #{from_alias} <#{from}>
To: #{to_alias} <#{to}>
Subject: #{subject}

#{message}
END_OF_MESSAGE
Net::SMTP.start(‘mail’) do |smtp|
smtp.send_message msg, from, to
end
end

questo metodo non funziona perche’ le variabili msg, from e to non sono
visibili all’interno del blocco smtp.
L’unica soluzione sarebbe quella di rendere msg @msg e assegnare from e
to ad altre variabili con scope di classe?

Dovrebbero essere visibili invece. Sono variabili locali e non ci
dovrebbero essere problemi. Mi sa che il problema sta da qualche altra
parte!

Il giorno ven, 18/05/2007 alle 11.42 +0200, david ha scritto:

Dovrebbero essere visibili invece. Sono variabili locali e non ci
dovrebbero essere problemi. Mi sa che il problema sta da qualche altra
parte!

ho provato con @msg anziche’ msg e dando al from e al to dei valori e
cosi’ funziona.

ma se usi “msg” invece di “@msg” no?

Il giorno ven, 18/05/2007 alle 11.46 +0200, david ha scritto:

ma se usi “msg” invece di “@msg” no?

a quanto pare no.
fatto usando irb funziona, se invece inserisco tutto il codice dentro un
metodo che viene richiamato da un altro metodo all’interno della stessa
classe devo usare @msg per farlo funzionare.

prova a mettere un buon vecchio “puts msg” come prima riga del blocco e
vedi
che ti dà

On 5/18/07, Mauro S. [email protected] wrote:


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


– Kia

therubymine.com | be a miner

Boh, senti, non so che dire. Ripeto che secondo me hai qualcosa altro
che non ti va. Lo scope non c’entra nulla. A me questo funziona:

#!/usr/bin/env ruby
require ‘net/smtp’
class Mailerino
def sendMail(from=“defSender”,from_alias="",
to=“defReciever”,to_alias=“in nome”, subject=“aSubject”, message =
“aMessage”)
msg = <<-THEMAIL
From: #{from_alias} <#{from}>
To:#{to_alias} <#{to}>
Subject:#{subject}

#{message}
THEMAIL

Net::SMTP.start(‘mail’) do |smtp|
smtp.send_message msg, from, to
end
end
end

m = Mailerino.new
m.sendMail(“[email protected]”,“jhkj”,“[email protected]”,“il nome”,“senti un
po’”, “funzia?”)